感觉思路一样啊。。但是不知道我哪里错了,麻烦指导下 #include <iostream> #include <cstdio> #include <cstdlib> #include <cstring> #include<algorithm> #include<vector> #include<map> #include<queue> #include<cmath> using namespace std; char a[10][10]; int w[4][2]; void solve(int x,int y,char tmp){ for(int m = 0;m<8;m++){ int zz=0;int flag =true; int i=w[m][0]; int j=w[m][1]; for(;(y+j)<8&&(x+i)<8&&(y+j)>-1&&(x+i)>-1;i+=w[m][0],j+=w[m][1]){ if(a[x+i][y+j]=='.'){ flag =false; break; }else if(a[x+i][y+j] == tmp){ break; } zz++; } i=0;j=0; if(flag && zz >= 1){ for(int n = 0;n<zz;n++){ i+=w[m][0];j+=w[m][1]; a[x+i][y+j] = tmp; //solve(x+i,y+j,tmp); } } } return; } int cal(char x){ int sum = 0; for(int i=0;i<8;i++){ for(int j=0;j<8;j++){ if(a[i][j] == x){ sum++; } } } return sum; } int main() { // freopen("s.txt","r",stdin); int t; while(cin>>t){ w[0][0] = 1;w[0][1] = 1; w[1][0] = -1;w[1][1] = -1; w[2][0] = 1;w[2][1] = -1; w[3][0] = -1;w[3][1] = 1; w[4][0] = 0;w[4][1] = 1; w[5][0] = 0;w[5][1] = -1; w[6][0] = -1;w[6][1] = 0; w[7][0] = 1;w[7][1] = 0; while(t--){ for(int i=0;i<8;i++){ for(int j=0;j<8;j++){ cin>>a[i][j]; } } int n,x,y,z; cin>>n; for(int i=0;i<n;i++){ cin>>x>>y>>z; char tmp; if(z == 0) tmp = '*'; if(z==1) tmp = 'o'; a[x][y] = tmp; solve(x,y,tmp); } int hei = cal('*'); int bai = cal('o'); cout<<hei<<" "<<bai<<endl; } } return 0; }
点赞 2

相关推荐

牛客网
牛客网在线编程
牛客网题解
牛客企业服务