Description
两个人在一个8*8的棋盘上下棋,先手下白子,每次只能将一颗白子上移一格(如果上一个为空,即既没有白子也没有黑子),后手下黑子,每次只能将一颗黑子下移一格(如果下一个为空),如果任意一个白子到达第一行先手赢,如果任意一个黑子到达第8行后手赢,现给出这块棋盘,两人足够机智,问谁赢
Input
一个8*8字符矩阵,B表示黑子,W表示白子,*表示空
Output
如果先手赢则输出A,否则输出B
Sample Input
Sample Output
A
Solution
数据量很小暴力枚举得到两人获胜所需最小步数作比较即可
Code
#include<stdio.h>
#include<string.h>
#define min(x,y) ((x)<(y)?(x):(y))
int main()
{
char map[9][9];
for(int i=0;i<8;i++)
scanf("%s",&map[i]);
int minw=8,minb=8;
for(int i=0;i<8;i++)
for(int j=0;j<8;j++)
{
if(map[i][j]=='W')
{
int temp=0;
for(int k=i-1;k>=0;k--)
if(map[k][j]=='.') temp++;
else temp=8;
minw=min(minw,temp);
}
else if(map[i][j]=='B')
{
int temp=0;
for(int k=i+1;k<8;k++)
if(map[k][j]=='.') temp++;
else temp=8;
minb=min(minb,temp);
}
}
if(minw<=minb) printf("A\n");
else printf("B\n");
return 0;
}