二零一五年百度之星程序设计大赛-1003棋盘占领
2015年百度之星程序设计大赛-1003棋盘占领
棋盘占领
Accepts: 937
Submissions: 2201
Time Limit: 2000/1000 MS (Java/Others)
Memory Limit: 32768/32768 K (Java/Others)
#include<iostream> #include<vector> #include<map> #include<string> #include<math.h> #include<algorithm> using namespace std; int bb[505][505]; int main() { int T,m,n; int t,i,j; int g; int x,y; int count,flag; cin>>T; for(t=1;t<=T;t++) { memset(bb,0,sizeof(bb)); cin>>n>>m; cin>>g; for(i=0;i<g;i++) { cin>>x>>y; bb[x][y]=1; } while(1){ flag=0; for(i=1;i<=n;i++) { count=0; for(j=1;j<=m;j++) { if(bb[i-1][j]==1)count++; if(bb[i+1][j]==1)count++; if(bb[i][j-1]==1)count++; if(bb[i][j+1]==1)count++; if(count==2) { if(bb[i-1][j]==1 && bb[i+1][j]==1) count=0; else if(bb[i][j+1]==1 && bb[i][j-1]==1) count=0; } if(count>1 && bb[i][j]==0) { bb[i][j]=1; flag=1; } count=0; } } if(flag==0) break; } count=0; for(i=1;i<=n;i++) { for(j=1;j<=m;j++) if(bb[i][j]==1) count++; // cout<<bb[i][j]<<" "; //cout<<endl; } cout<<"Case #"<<t<<":"<<endl; cout<<count<<endl; } return 0; }