求助!为什么会这样?
  • 板块P1331 海战
  • 楼主DevilsFlame
  • 当前回复1
  • 已保存回复1
  • 发布时间2023/10/6 13:51
  • 上次更新2023/11/2 15:16:31
查看原帖
求助!为什么会这样?
1050431
DevilsFlame楼主2023/10/6 13:51
#include<bits/stdc++.h>
using namespace std;
int sx1,sy1;
char s[1001][1001];
bool z[1002][1002],e=0;
int ans=0,dx[4]={0,0,1,-1},dy[4]={1,-1,0,0};
int ss(int x,int y){
    for(int i=0;i<4;i++){
        int w=x+dx[i],q=y+dy[i];
        if(z[w][q]==1&&w>0&&q>0&&w<=sx1&&q<=sy1){
            z[w][q]=0;
            ss(w,q);
        }
    }
}
int main(){
    cin>>sx1>>sy1;
    for(int i=1;i<=sx1;i++)
        for(int j=1;j<=sy1;j++){
            cin>>s[i][j];
            if(s[i][j]=='.')
                z[i][j]=0;
            else
                z[i][j]=1;
        }
    for(int i=1;i<=sx1;i++)
        for(int j=1;j<=sy1;j++){
            if(z[i][j]){
                ans++;
                ss(i,j);
                z[i][j]=0;
            }
        }
    cout<<"There are "<<ans<<" ships."<<endl;
    return 0;
}

数据1

#include<bits/stdc++.h>
using namespace std;
int sx1,sy1;
char s[1001][1001];
bool z[1002][1002],e=0;
int ans=0,dx[4]={0,0,1,-1},dy[4]={1,-1,0,0};
int ss(int x,int y){
    for(int i=0;i<4;i++){
        int w=x+dx[i],q=y+dy[i];
      e=z[w+dx[i]][q=dy[i]];
        if(z[w][q]==1&&w>0&&q>0&&w<=sx1&&q<=sy1){
            z[w][q]=0;
            ss(w,q);
        }
    }
}
int main(){
    cin>>sx1>>sy1;
    for(int i=1;i<=sx1;i++)
        for(int j=1;j<=sy1;j++){
            cin>>s[i][j];
            if(s[i][j]=='.')
                z[i][j]=0;
            else
                z[i][j]=1;
        }
    for(int i=1;i<=sx1;i++)
        for(int j=1;j<=sy1;j++){
            if(z[i][j]){
                ans++;
                ss(i,j);
                z[i][j]=0;
            }
        }
    if(e)
        cout<<"There are "<<ans<<" ships."<<endl;
    else
        cout<<"Bad placement."<<endl;
    return 0;
}

数据2

2023/10/6 13:51
加载中...