70 RE 求助
查看原帖
70 RE 求助
654958
Light_az楼主2022/9/24 17:20
#include<bits/stdc++.h>
using namespace std;
int n,m,cnt=0,t=0,k;
struct node{
	int n;
	int d1,d2,d3,d4;
}a[101][101];
char x;
int dfs1(int x,int y){
	int x1=x,y1=y;
	int ans=0;
	while(x1>=1&&y1>=1){
		x1--;
		y1--;
		if(a[x1][y1].n)
			ans++;
		else{
			break;
		}
	}
	return ans;
}
int dfs2(int x,int y){
	int x1=x,y1=y;
	int ans=0;
	while(x1>=1&&y1<=n){
		x1--;
		y1++;
		if(a[x1][y1].n)
			ans++;
		else{
			break;
		}
	}
	return ans;
}
int dfs3(int x,int y){
	int x1=x,y1=y;
	int ans=0;
	while(x1<=n&&y1>=1){
		x1++;
		y1--;
		if(a[x1][y1].n)
			ans++;
		else{
			break;
		}
	}
	return ans;
}
int dfs4(int x,int y){
	int x1=x,y1=y;
	int ans=0;
	while(x1<=n&&y1<=n){
		x1++;
		y1++;
		if(a[x1][y1].n)
			ans++;
		else{
			break;
		}
	}
	return ans;
}
bool ts(int x,int y){
	if(a[x][y+1].n&&a[x+1][y].n&&a[x+1][y+1].n)
		return 1;
	return 0;
}
int main(){
	cin>>n;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			cin>>x;
			a[i][j].n=x-'0';
		}
	}
		
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			if(a[i][j].n==1){
				if(ts(i,j)){
					cnt+=min(min(dfs1(i,j),dfs2(i,j+1)),min(dfs3(i+1,j),dfs4(i+1,j+1)))+1;
				}			
				cnt+=min(min(dfs1(i,j),(dfs2(i,j))),min(dfs3(i,j),dfs4(i,j)));
			}
		}
	}
	cout<<cnt;
	return 0;
}

2022/9/24 17:20
加载中...