题意:在8*8的棋盘中有若干个黑(B)白(W)旗子,A每次把一枚白棋子往上移一步,B每次把一枚黑棋子往下移一步,一枚棋子不能移到另一枚棋子上,A把白棋子移到第一行,B把黑棋子移到第8行,A、B轮流移棋子,谁优先把一枚棋子移到指定位置谁就赢。输出谁赢。
题解:搜索一遍棋盘,找到白棋子可以到达第一行最短的步数,找到黑棋子到达第八行最短步数,比较两者的大小就可以
#include <iostream> #include <cstdio> using namespace std; char mp[10][10]; int main() { int A=10,B=10; int k; for(int i=0;i<8;i++) scanf("%s",mp[i]); for(int i=0;i<8;i++) for(int j=0;j<8;j++) { if(mp[i][j]=='W') { for(k=0;k<i;k++) if(mp[k][j]=='B') break; if(k==i) A=min(A,i); } if(mp[i][j]=='B') { for( k=i;k<8;k++) if(mp[k][j]=='W') break; if(k==8) B=min(B,7-i); } } //cout<<A<<B<<endl; if(A<=B) cout<<"A"<<endl;//A=B,A赢 else cout<<"B"<<endl; return 0; }