求助,最后一个测试点RE了

P8662 [蓝桥杯 2018 省 AB] 全球变暖

_xiao_ @ 2023-08-22 16:59:44

#include<bits/stdc++.h>
using namespace std;
int m[1010][1010],a,n;
int dx[5]={-1,0,1,0},dy[5]={0,1,0,-1};
int h[10001][3]={0};
int main(){
    cin>>n;
    char a;
    for(int i=0;i<n;i++){
        for(int j=0;j<n;j++){
            cin>>a;
            if(a=='#') m[i][j]=1;//岛屿标记为1,否则为0 
        }
    }//输入 
    int sum=0;int ans=0;
    for(int i=0;i<n;i++){
        for(int j=0;j<n;j++){
            if(m[i][j]==1){
                //开始搜索 
                h[1][1]=i;h[1][2]=j;
                int head=1,tail=1;
                int ccf=0;
                while(head<=tail){
                    for(int k=0;k<4;k++){
                        int u=h[head][1]+dx[k],v=h[head][2]+dy[k];
                        if(u>=0 && u<n && v>=0 && v<n && m[u][v]==1){
                            if( abs(m[u+1][v])==1 && abs(m[u-1][v])==1 && abs(m[u][v+1])==1 && abs(m[u][v-1])==1  ){
                                ccf=1;
                            }//如果海水上涨没有淹没 
                            m[u][v]=-1;
                            if( abs(m[i+1][j]==-1) && abs(m[i-1][j])==-1 && abs(m[i][j+1]==-1) && abs(m[i][j-1]==-1 ) ){
                                m[i][j]=2; 
                            }
                            tail++;
                            h[tail][1]=u;
                            h[tail][2]=v;
                        }
                    }
                    head++;
                }
                if(ccf==1) ans++;//这个岛屿没有被淹没 
                sum++;
                //搜索完一个岛屿 
            }
        }
    }
    //cout<<sum<<" ";
    cout<<sum-ans;
    return 0;
}

by 天使宝贝 @ 2023-08-22 17:08:02

所有数组定义加一个0


by 天使宝贝 @ 2023-08-22 17:10:51

@xiao


by _xiao_ @ 2023-08-22 17:48:40

过了,谢谢


by ICPC42 @ 2024-03-31 09:57:37

我也RE了,请问所有数组定义加一个0是什么意思


|