谁能帮我解决一下运行错误的问题谢谢大佬 P1596
  • 板块灌水区
  • 楼主lalaouye
  • 当前回复18
  • 已保存回复18
  • 发布时间2021/1/26 19:45
  • 上次更新2023/11/5 04:21:05
查看原帖
谁能帮我解决一下运行错误的问题谢谢大佬 P1596
431289
lalaouye楼主2021/1/26 19:45
#include<bits/stdc++.h>
using namespace std;
int dx[8]={-1,0,1,0,-1,1,1,-1},dy[8]={0,1,0,-1,1,-1,1,-1};
int bz[106][106],num=0,n,m;
int x,y,t,w,i,flag=0;
int h[1100][2];
void doit(int p,int q){
    
    bz[p][q]=0;
    t=0;w=1;h[1][0]=p;h[1][1]=q;
    do{
    	flag=0;
        t++;
        for(int i=0;i<=7;i++){
            x=h[t][0]+dx[i];
            y=h[t][1]+dy[i];
            if((x>=0)&&(x<n)&&(y>=0)&&(y<m)&&(bz[x][y])){
                w++;
                h[w][0]=x;
                h[w][1]=y;
                bz[x][y]=0;
                flag=1;
            }
        }
    }
    while(t<w);
    num++;
}
int main(){
    int i,j;
    char s[106],ch;
    cin>>n>>m;
    for(int i=0;i<=n-1;i++){
        for(int j=0;j<=m-1;j++){
            bz[i][j]=1;
        }
    }
    for(int i=0;i<=n-1;i++){
        cin>>s;
        for(int j=0;j<=m-1;j++){
            if(s[j]=='.'){
                bz[i][j]=0;
            }
        }
    }
    for(int i=0;i<=n-1;i++){
        for(int j=0;j<=m-1;j++){
            if(bz[i][j]){
                doit(i,j);
            }
        }
    }
    cout<<num;
}

2021/1/26 19:45
加载中...