怎么只有50分

P1451 求细胞数量

```cpp #include<iostream> using namespace std; int m,n,sum=0; char array[1010][1010]; int matrix[1000][1000]; //存储a中元素是否用过 int a[1000][10]; //队列,a[tail][1]记录行,a[tail][2]记录列 int dx[5]={0,0,1}, //过河卒 dy[5]={0,1,0}; int bfs(int i,int j) { int head=0,tail=1,x,y; a[1][1]=i; //hang a[1][2]=j; //lie matrix[i][j]=0; do { head++; for (int k=1; k<=4; k++) { x=a[head][1]+dx[k]; //k==1右 k==2下 y=a[head][2]+dy[k]; //刚开始错写为 a[tail][1],而实际上matrix[a[head][1][a[head][2]]就是father;本题与上题思路是一样的,处理方法不一样 //上题用b数组存父节点 if (matrix[x][y]) { tail++; a[tail][1]=x; a[tail][2]=y; matrix[x][y]=0; } } } while (head<tail); //这个<写错了啊 !!找了我半天啊 } int main() { cin>>m>>n; for (int i=1; i<=m; i++) for (int j=1; j<=n; j++) { cin>>array[i][j]; if (array[i][j]=='0') matrix[i][j]=0; //这些数字为什么是字符型的? else matrix[i][j]=1; } for (int i=1; i<=m; i++) for (int j=1; j<=n; j++) if (matrix[i][j]) { bfs(i,j); sum++; } cout<<sum; return 0; } ```
by 秋日私语 @ 2017-07-29 13:11:05


|