当前位置: 首页 > news >正文

(poj1.2.1)1970(筛选法模拟)

/*
 * 1970_1.cpp
 *
 *  Created on: 2013年10月6日
 *      Author: Administrator
 */

#include <iostream>
#include <cstdio>

using namespace std;

int d[4][2] = {{0,1},{1,0},{1,1},{-1,1} };//方向矢量


/**
 * 判断点(x,y)是否在边界里面
 */
bool valid(int x , int y){
	return (x >=0 && x < 19 && y >= 0 && y < 19);
}

int a [20][20];//棋盘

int main(){
	int t;
	scanf("%d",&t);

	while(t--){
		int i,j,k,u;
		int x,y;
		for(i = 0 ; i < 19 ; ++i){
			for(j = 0 ; j < 19 ; ++j){
				scanf("%d",&a[i][j]);
			}
		}

		for(j = 0 ; j < 19 ; ++j){
			for(i = 0 ; i < 19 ; ++i){
				//这个必须要有,因为0表示的是该位置没有棋子,只有在有棋子的情况下,该位置才有意义
				if(a[i][j] == 0){
					continue;
				}

				for(k = 0 ; k < 4 ; ++k){
					//如果反方向同色,换方向
					x = i -  d[k][0];
					y = j - d[k][1];
					if(valid(x,y) && a[x][y] == a[i][j]){
						continue;
					}

					//如果延伸5格后越界,换方向
					x = i + d[k][0]*4 ;
					y = j + d[k][1]*4;
					if(!valid(x,y)){
						continue;
					}

					//如果
					for(u = 0 ; u < 5 ; ++u){
						x = i + d[k][0]*u;
						y = j + d[k][1]*u;

						if(a[x][y] != a[i][j]){
							break;
						}
					}

					如果5格同色,但6格也同色,也换方向
					x = i + d[k][0]*5;
					y = j + d[k][1]*5;
					if(valid(x,y) && a[x][y] == a[i][j]){
						continue;
					}

					//表示找到了5格同色但6个不同色的情况
					if(u == 5){
						break;
					}
				}

				if(k < 4){
					break;
				}

			}

			if(i < 19){
				break;
			}
		}

		if(j < 19){
			printf("%d\n",a[i][j]);
			printf("%d %d\n",i + 1, j + 1);
		}else{
			printf("0\n");
		}
	}
}


相关文章:

  • 关于nmap的几个技巧
  • Erlang几种判断语句:if、case等
  • (pojstep1.3.1)1017(构造法模拟)
  • 新视野OJ 2190 [SDOI2008]仪仗队 (数论-gcd)
  • WinForm_2一个简单实用的小应用——桌面时钟
  • 数据分析工程师笔试题:计算平均数的指标及其优缺点
  • 新视野OJ 2005 [Noi2010]能量采集 (数论-gcd)
  • Python 入门教程 17 ---- Introduction to Classes
  • HDU 4288 Coder 【线段树+离线处理+离散化】
  • 近期刷题的c语言总结。
  • 程序员看婚姻
  • Python 入门教程 18 ---- File Input/Output
  • 【职业】致迷茫的大学生们
  • (poj1.3.2)1791(构造法模拟)
  • 微软云技术Windows Azure专题(五):如何将WCF服务部署在Windows Azure上
  • Android优雅地处理按钮重复点击
  • javascript 总结(常用工具类的封装)
  • MySQL的数据类型
  • python 装饰器(一)
  • SQLServer之创建显式事务
  • Vue2 SSR 的优化之旅
  • yii2权限控制rbac之rule详细讲解
  • 你真的知道 == 和 equals 的区别吗?
  • 收藏好这篇,别再只说“数据劫持”了
  • Java总结 - String - 这篇请使劲喷我
  • 数据可视化之下发图实践
  • ​插件化DPI在商用WIFI中的价值
  • #Spring-boot高级
  • $Django python中使用redis, django中使用(封装了),redis开启事务(管道)
  • ( 10 )MySQL中的外键
  • (Matalb分类预测)GA-BP遗传算法优化BP神经网络的多维分类预测
  • (二)WCF的Binding模型
  • (附源码)springboot炼糖厂地磅全自动控制系统 毕业设计 341357
  • ***linux下安装xampp,XAMPP目录结构(阿里云安装xampp)
  • .aanva
  • .bat批处理(八):各种形式的变量%0、%i、%%i、var、%var%、!var!的含义和区别
  • .NET 4.0中的泛型协变和反变
  • .NET Conf 2023 回顾 – 庆祝社区、创新和 .NET 8 的发布
  • .Net Core/.Net6/.Net8 ,启动配置/Program.cs 配置
  • .net mvc部分视图
  • .NET 实现 NTFS 文件系统的硬链接 mklink /J(Junction)
  • .net 微服务 服务保护 自动重试 Polly
  • /etc/sudoer文件配置简析
  • ??在JSP中,java和JavaScript如何交互?
  • @Autowired注解的实现原理
  • @DateTimeFormat 和 @JsonFormat 注解详解
  • @for /l %i in (1,1,10) do md %i 批处理自动建立目录
  • [ 渗透工具篇 ] 一篇文章让你掌握神奇的shuize -- 信息收集自动化工具
  • [ 云计算 | AWS ] 对比分析:Amazon SNS 与 SQS 消息服务的异同与选择
  • [ 云计算 | AWS 实践 ] Java 如何重命名 Amazon S3 中的文件和文件夹
  • [\u4e00-\u9fa5] //匹配中文字符
  • [AI]ChatGPT4 与 ChatGPT3.5 区别有多大
  • [Android开源]EasySharedPreferences:优雅的进行SharedPreferences数据存储操作
  • [Angular] 笔记 21:@ViewChild
  • [bzoj1901]: Zju2112 Dynamic Rankings