1. 程式人生 > >1359:圍成面積------有錯誤,80'

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’