30分求助!样例能过
查看原帖
30分求助!样例能过
672632
Betty1236楼主2022/10/4 08:28
#include <iostream>
using namespace std;
char f;
int fz[100][100];
int ans=0;
void finddan(int x,int y,int n){
	//cout<<"huaidhifaeh"<<endl;
	int i,j;
	for(i=1;;i++){
		if((x+i)<=n&&(x-i)>=0&&(y-i)>=0&&(y+i)<=n&&fz[x+i][y+i]&&fz[x-i][y-i]&&fz[x+i][y-i]&&fz[x-i][y+i]){
			ans++;
		}
		else break;
	}
}
void findshuang(int x,int y,int n){
	//cout<<"hfoiafhpr"<<endl;
	ans++;
	int i,j;
	for(i=1,j=2;;i++,j++){
		if((x+j)<=n&&(x-i)>=0&&(y-j)>=0&&(y+i)<=n&&fz[x+j][y+i]&&fz[x-i][y-j]&&fz[x+j][y-j]&&fz[x-i][y+i]){
			ans++;
		}
		else break;
	}
}
int main(){
	int n;
	cin>>n;
	for(int i=0;i<n;i++){
		for(int j=0;j<n;j++){
			cin>>f;
			fz[i][j]=f-48;
		}
	}
	for(int i=1;i<n-1;i++){
		for(int j=1;j<n-1;j++){
			if(fz[i][j]){finddan(i,j,n);}
		}
	}
	for(int i=0;i<n-1;i++){
		for(int j=0;j<n-1;j++){
			if(fz[i][j]&&fz[i][j+1]&&fz[i+1][j]&&fz[i+1][j+1]){findshuang(i,j,n);}
		}
	}
	cout<<ans;
} 
2022/10/4 08:28
加载中...