1359:圍成面積------有錯誤,80'
#include<iostream> #include<cstdio> using namespace std; int flag[4][2]={{0,1},{0,-1},{1,0},{-1,0}}; int a[1000][1000]; int queue[1000][2]; int ans=0; bool p[1000][1000]; void bfs(int x,int y) { int i; int front=0,rear=2; queue[1][0]=x; queue[1][1]=y; while(front<rear-1) { front++; x=queue[front][0]; y=queue[front][1]; for(i=0;i<4;i++) { int x1=x+flag[i][0]; int y1=y+flag[i][1]; if(x1<1||x1>10||y1<1||y1>10||a[x1][y1]||p[x1][y1]) continue; p[x1][y1]=true; ans++; queue[rear][0]=x1; queue[rear++][1]=y1; } } } int main() { freopen("D:\\in.txt","r",stdin); freopen("D:\\out.txt","w",stdout); int ans2=0; int i,j; for(i=1;i<=10;i++) for(j=1;j<=10;j++) scanf("%d",&a[i][j]); i=1; while(!a[i][1]&&i<=10) { bfs(i,1); i++; } i=1; while(!a[i][10]&&i<=10) { bfs(i,10); i++; } i=1; while(!a[1][i]&&i<=10) { bfs(1,i); i++; } i=1; while(!a[10][i]&&i<=10) { bfs(10,i); i++; } for(i=1;i<=10;i++) for(j=1;j<=10;j++) if(a[i][j]==1) ans2++; cout<<100-ans2-ans<<endl; return 0; }
還有一個小錯誤,80’