BUCT Coder 2166 : 五子棋
来源:互联网 发布:网络控制器 编辑:程序博客网 时间:2024/05/20 02:23
题目链接 BUCT Coder 2166
2166: 五子棋
时间限制: 1Sec 内存限制: 128 MB
提交: 68 解决: 9
[提交][状态][论坛]
题目描述
在一个10行10列的棋盘上,有四颗棋子,需要你再增加一颗棋子,使得这五颗棋子连成一条连续的直线。
输入
输入包含一组测试数据,包括四行,每行是两个整数i和j(0<=i,j<=9),分别表示棋子的行和列。
输入保证再增加的棋子只有放在一个唯一的位置才能连成一条连续的直线
输出
输出包括一行,两个整数,表示增加的棋子的行和咧
样例输入
0 0
0 1
0 3
0 4
样例输出
0 2
题目很简单,先判断所给的点是属于哪一种情况,(1)同一行(2)同一列(3)同一主对角线(4)同一副对角线。然后穷举所属状态的每一种状态即可。
#define LOCAL#include<iostream>#include<algorithm>#include<cstring>#include<cstdio>using namespace std;int ansx,ansy;bool comp(int a,int b){return a<b;}bool IsIn(int a,int Arry[]){for(int i=0;i<4;i++){if(Arry[i]==a){return 1;break;}}return 0;}bool IsInAline(int a[])//是不是一行{bool Flag=1;sort(a,a+5,comp);for(int i=1;i<5;i++){if(a[i]!=a[i-1]+1){Flag=0;break;}}return Flag;}void GetAnsFromXorY(int a[],int Flag)//从行或列中寻找答案{int temp[5];int res;for(int i=0;i<10;i++){if(IsIn(i,a)) continue;memcpy(temp,a,sizeof(int)*4);temp[4]=i;if(IsInAline(temp)){res=i;break;}}if(Flag==0) ansy=res;if(Flag==1) ansx=res;cout<<ansx<<" "<<ansy<<endl;}void GetAnsFromXandY(int x[],int y[],int Flag)//从对角线找答案{int dp=y[0]-x[0];//主对角线int sum=x[0]+y[0];//副对角线int tempx[5],tempy[5];for(int i=0;i<10;i++){int j;if(Flag==2)j=i+dp;if(Flag==3)j=sum-i;if( IsIn(i,x) || IsIn(j,y)) continue;memcpy(tempx,x,sizeof(int)*4);memcpy(tempy,y,sizeof(int)*4);tempx[4]=i;tempy[4]=j;if(IsInAline(tempx) && IsInAline(tempy)){ansx=i;ansy=j;break;}}cout<<ansx<<" "<<ansy<<endl;}int main(){#ifdef LOCALfreopen("test.txt","r",stdin);freopen("tested.txt","w",stdout);#endifint x[4],y[4];for(int i=0;i<4;i++)cin>>x[i]>>y[i];if(x[0]==x[1]){ansx=x[0];GetAnsFromXorY(y,0);}else if(y[0]==y[1]){ansy=y[0];GetAnsFromXorY(x,1);}else if(x[1]-x[0]==y[1]-y[0]){GetAnsFromXandY(x,y,2);}else if(x[0]+y[0]==x[1]+y[1]){GetAnsFromXandY(x,y,3);}return 0;}
0 0
- BUCT Coder 2166 : 五子棋
- BUCT Coder 2176:Poker Game
- BUCT Coder 2269:24点游戏
- Coder Buct 2190: 算法2-1:集合union
- Coder Buct 1072: 数据结构作业(可选)-- 约瑟环问题
- Buct oj
- Coder
- coder
- Coder
- coder
- Coder
- 五子棋
- 五子棋
- 五子棋
- 五子棋
- 五子棋
- 五子棋
- 五子棋
- Ron Patton《软件测试》----运用测试技术(总结点)
- 虚函数一个奇特例子,vfptr再调用自身函数bar()
- OCP-1Z0-051 第99题 AVG函数
- c++ 时间类型详解 time_t
- 使用Apache的ab工具进行压力测试
- BUCT Coder 2166 : 五子棋
- ssl错误 该网站的安全证书不受信任!
- HTML5之FileReader的使用
- android权限设置对照表
- 假设你工作时老板给你安排了一个任务
- 字符串匹配的KMP算法@阮一峰
- 扩展KMP算法
- 基于smdk2410 开发板u-boot-1.2.0 nand flash读写操作及其命令的实现
- java启动结束其他进程