40分求助
查看原帖
40分求助
723056
LJXlalala楼主2022/9/26 17:03
#include<iostream>
using namespace std;
int a[110][110],n;
int ans=0;
int pdzs(int x,int y){
	if(x<0||x>n||y<0||y>n) return 0;
	if(a[x][y]==0) return 0;
	if(a[x][y]==1) return 1+pdzs(x-1,y-1);
}
int pdys(int x,int y){
	if(x<0||x>n||y<0||y>n) return 0;
	if(a[x][y]==0) return 0;
	if(a[x][y]==1) return 1+pdys(x+1,y-1);
}
int pdzx(int x,int y){
	if(x<0||x>n||y<0||y>n) return 0;
	if(a[x][y]==0) return 0;
	if(a[x][y]==1) return 1+pdzx(x-1,y+1);
}
int pdyx(int x,int y){
	if(x<0||x>n||y<0||y>n) return 0;
	if(a[x][y]==0||x<0||x>n||y<0||y>n) return 0;
	if(a[x][y]==1) return 1+pdyx(x+1,y+1);
}
int pd1(int x,int y){
	return min(min(pdzs(x-1,y-1),pdys(x+1,y-1)),min(pdzx(x-1,y+1),pdyx(x+1,y+1)));
}
int pd2(int x,int y){
	return min(min(pdzs(x-1,y-1),pdys(x+2,y-1)),min(pdzx(x-1,y+2),pdyx(x+1,y+2)))+1;
}
int main(){
	int i,j,k;
	string str;
	cin>>n;
	for(i=1;i<=n;i++){
		cin>>str;
		for(j=1;j<=n;j++){
			a[i][j]=(int)str[j-1]-48;
		}
	}
	for(i=1;i<=n;i++){
		for(j=1;j<=n;j++){
			if(a[i][j]&&a[i+1][j]&&a[i][j+1]&&a[i+1][j+1]&&i+1<=n&&j+1<=n){
				ans+=pd2(i,j);
			}
			if(a[i][j]){
				ans+=pd1(i,j);
			}
		}
	}
	cout<<ans;
	return 0;
} 

大佬帮忙看看哪错了

2022/9/26 17:03
加载中...