求救:这道题这样写错在哪了(站外)
查看原帖
求救:这道题这样写错在哪了(站外)
739307
All_Failed_OI_Cici楼主2024/6/29 22:49

我的代码:

#include<bits/stdc++.h>
using namespace std;
int n,m;
int cnt1,cnt2;//cnt1 -> land,cnt2 -> treasure
vector<string> ditu;
string s;
bool panduan(int i,int j){
	int dx[4]={1,0,-1,0};
	int dy[4]={0,-1,0,1};
	if(ditu[i][j]==0) return false;
	for(int a=0;a<4;a++){
		if(i+dx[a]<n&&i+dx[a]>=0&&j+dy[a]>=0&&j+dy[a]<m){//如果存在 
			if(ditu[i][j]>=1) return false;
		}
	}
	return true; 
}
int main(){
	cin>>n>>m;
	for(int i=0;i<n;i++){
		cin>>s;
		ditu.push_back(s);
	}
	for(int i=0;i<n;i++){
		for(int j=0;j<m;j++){
			if(panduan(i,j)){
				cnt1++;
				if(ditu[i][j]>=2) cnt2++;
			}
		}
	}
	cout<<cnt1<<" "<<cnt2;
	return 0;
}

样例也没过,我输出了0和0,不知道为什么。

样例,可复制的:

输入

10 11
01000000151
11000000111
00110000811
00110100010
00000000000
00000111000
00114111000
00110010000
00019000010
00120000001

输出

7 2

在线等,求助

2024/6/29 22:49
加载中...