C++——黑白棋(基础模块)
来源:互联网 发布:mac怎么下载idea 编辑:程序博客网 时间:2024/05/15 17:12
黑白棋(基础模块)
时限:1000ms 内存限制:10000K 总时限:3000ms
描述:
相信大家对于黑白棋已经了如指掌了,下面我们来编写一些更有挑战性的模块。对于棋盘的某种状态来说,可能有很多处都可以下子,也可能只有一处,甚至无处下子。我们需要你编写程序计算对于将要下某种颜色当前棋盘状态共有多少处可以落子。
输入:
首先读入的是当前棋盘的状态,共8行,每行8个数字,1代表白棋,2代表黑棋,0代表为空格(未下子)。第9行有1个数字N代表将要下子的颜色。
输出:
出一个整数,代表共有多少处可以落子,如果无法落子则输出0.
输入样例:
0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 1 2 0 0 00 0 0 2 1 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 01
输出样例:
4
#include<iostream>
using namespace std;
void init();int shang(int m,int n);int xia(int m,int n);int zuo(int m,int n);int you(int m,int n);int zuoshang(int m,int n);int youshang(int m,int n);int zuoxia(int m,int n);int youxia(int m,int n);
int qipan[8][8];int color;
int main(){ int i,j,counter;
init();
counter=0;
for(i=0;i<8;i++) { for(j=0;j<8;j++) { if(qipan[i][j]==color) { if(shang(i,j)) { counter++; } if(xia(i,j)) { counter++; } if(zuo(i,j)) { counter++; } if(you(i,j)) { counter++; } if(zuoshang(i,j)) { counter++; } if(youshang(i,j)) { counter++; } if(zuoxia(i,j)) { counter++; } if(youxia(i,j)) { counter++; } } } } cout<<counter<<endl;}
void init(){ int i,j; for(i=0;i<8;i++) { for(j=0;j<8;j++) { cin>>qipan[i][j]; } } cin>>color;}int shang(int m,int n){ int i,flag,temp; flag=0; temp=1; for(i=m-1;i>=0;i--) { if(qipan[i][n]!=color&&qipan[i][n]!=0&&qipan[i][n]!=3) { temp++; } else { break; } } if(temp>1&&i>=0&&qipan[i][n]==0) { qipan[i][n]=3; flag=1; } return(flag);}
int xia(int m,int n){ int i,flag,temp; flag=0; temp=1; for(i=m+1;i<8;i++) { if(qipan[i][n]!=color&&qipan[i][n]!=0&&qipan[i][n]!=3) { temp++; } else { break; } } if(temp>1&&i<8&&qipan[i][n]==0) { qipan[i][n]=3; flag=1; } return(flag);}
int zuo(int m,int n){ int i,flag,temp; flag=0; temp=1; for(i=m-1;i>=0;i--) { if(qipan[m][i]!=color&&qipan[m][i]!=0&&qipan[m][i]!=3) { temp++; } else { break; } } if(temp>1&&i>=0&&qipan[m][i]==0) { qipan[m][i]=3; flag=1; } return(flag);}
int you(int m,int n){ int i,flag,temp; flag=0; temp=1; for(i=n+1;i<8;i++) { if(qipan[m][i]!=color&&qipan[m][i]!=0&&qipan[m][i]!=3) { temp++; } else { break; } } if(temp>1&&i<8&&qipan[m][i]==0) { qipan[m][i]=3; flag=1; } return(flag);}
int zuoshang(int m,int n){ int i,j,flag,temp,flag1; flag=0; temp=1; flag1=0; for(i=m-1;i>=0;i--) { for(j=n-1;j>=0;j--) { if(m-i==n-j) { if(qipan[i][j]!=color&&qipan[i][j]!=0&&qipan[i][j]!=3) { temp++; } else { flag1=1; break; } } } if(flag1==1) { break; } } if(temp>1&&i>=0&&j>=0&&qipan[i][j]==0) { qipan[i][j]=3; flag=1; } return(flag);}
int youshang(int m,int n){ int i,j,flag,temp,flag1; flag=0; temp=1; flag1=0; for(i=m-1;i>=0;i--) { for(j=n+1;j<8;j++) { if(m-i==j-n) { if(qipan[i][j]!=color&&qipan[i][j]!=0&&qipan[i][j]!=3) { temp++; } else { flag1=1; break; } } } if(flag1==1) { break; } } if(temp>1&&i>=0&&j<8&&qipan[i][j]==0) { qipan[i][j]=3; flag=1; } return(flag);}
int zuoxia(int m,int n){ int i,j,flag,temp,flag1; flag=0; temp=1; flag1=0; for(i=m+1;i<8;i++) { for(j=n-1;j>=0;j--) { if(i-m==n-j) { if(qipan[i][j]!=color&&qipan[i][j]!=0&&qipan[i][j]!=3) { temp++; } else { flag1=1; break; } } } if(flag1==1) { break; } } if(temp>1&&i<8&&j>=0&&qipan[i][j]==0) { qipan[i][j]=3; flag=1; } return(flag);}
int youxia(int m,int n){ int i,j,flag,temp,flag1; flag=0; temp=1; flag1=0; for(i=m+1;i<8;i++) { for(j=n+1;j<8;j++) { if(i-m==j-n) { if(qipan[i][j]!=color&&qipan[i][j]!=0&&qipan[i][j]!=3) { temp++; } else { flag1=1; break; } } } if(flag1==1) { break; } } if(temp>1&&i<8&&j<8&&qipan[i][j]==0) { qipan[i][j]=3; flag=1; } return(flag);}
//写到深夜一点半也是很(。・∀・)ノ゙嗨呀~对不起我明天的高数离散,呜呜~
- C++——黑白棋(基础模块)
- C++——黑白棋(向左)
- C++——黑白棋(右上)
- C++——黑白棋(落子)
- C++——黑白棋(final)
- C++——黑白棋(连续子个数)
- C++——黑白棋(状态改变)
- C++——又是黑白棋
- UVA220 ——黑白棋(Othello)
- c语言图形小游戏(黑白棋)
- C黑白棋
- 黑白棋 C语言
- 黑白棋代码——完结版
- 黑白棋(game)
- 枚举(黑白棋)
- 黑白棋(博弈论)
- 黑白棋(落子)
- 黑白棋的基础程序
- POJ 2155 Matrix(二维树状数组)
- 项目报错:Duplicate files copied in APK META-INF/LICENSE
- 杭电ACM OJ 1027 Ignatius and the Princess II 全排列的第N个 康托展开
- 使用centOS 7配置nodeJS开发环境
- 文字——弹幕?
- C++——黑白棋(基础模块)
- Mac 下配置 Vim vundle 代码补全 YouCompleteMe 等
- 51nod 1094 和为k的连续区间
- 单点登录
- 关于栈对齐的反汇编代码
- 熬夜写了道题
- 使用FireBug插件辅助采集网页动态加载数据
- 关于JavaScript函数柯里化问题探索
- Redis-Jedis连接Redis