当前位置: 首页 > 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上
  • JS中 map, filter, some, every, forEach, for in, for of 用法总结
  • [分享]iOS开发-关于在xcode中引用文件夹右边出现问号的解决办法
  • [原]深入对比数据科学工具箱:Python和R 非结构化数据的结构化
  • 5、React组件事件详解
  • Docker容器管理
  • java B2B2C 源码多租户电子商城系统-Kafka基本使用介绍
  • Python代码面试必读 - Data Structures and Algorithms in Python
  • spring cloud gateway 源码解析(4)跨域问题处理
  • SpringCloud集成分布式事务LCN (一)
  • 高度不固定时垂直居中
  • 给github项目添加CI badge
  • 关于List、List?、ListObject的区别
  • 缓存与缓冲
  • 理解 C# 泛型接口中的协变与逆变(抗变)
  • 漫谈开发设计中的一些“原则”及“设计哲学”
  • 使用SAX解析XML
  • 数据仓库的几种建模方法
  • 数据可视化之 Sankey 桑基图的实现
  • 我是如何设计 Upload 上传组件的
  • 验证码识别技术——15分钟带你突破各种复杂不定长验证码
  • 正则学习笔记
  • 关于Kubernetes Dashboard漏洞CVE-2018-18264的修复公告
  • 函数计算新功能-----支持C#函数
  • 曜石科技宣布获得千万级天使轮投资,全方面布局电竞产业链 ...
  • #多叉树深度遍历_结合深度学习的视频编码方法--帧内预测
  • #我与Java虚拟机的故事#连载05:Java虚拟机的修炼之道
  • #周末课堂# 【Linux + JVM + Mysql高级性能优化班】(火热报名中~~~)
  • (007)XHTML文档之标题——h1~h6
  • (2)STM32单片机上位机
  • (Redis使用系列) SpringBoot 中对应2.0.x版本的Redis配置 一
  • (保姆级教程)Mysql中索引、触发器、存储过程、存储函数的概念、作用,以及如何使用索引、存储过程,代码操作演示
  • (附源码)node.js知识分享网站 毕业设计 202038
  • (附源码)springboot人体健康检测微信小程序 毕业设计 012142
  • (附源码)ssm码农论坛 毕业设计 231126
  • (附源码)小程序 交通违法举报系统 毕业设计 242045
  • (十八)三元表达式和列表解析
  • (转载)(官方)UE4--图像编程----着色器开发
  • (最完美)小米手机6X的Usb调试模式在哪里打开的流程
  • .gitattributes 文件
  • .Net 4.0并行库实用性演练