同下20分
查看原帖
同下20分
416242
New_hope楼主2022/10/8 21:36
#include<bits/stdc++.h>
using namespace std;

bool s[105][105];
long long ans = 0;

void find(int x,int y,int k){
	
	int l1,l2;
	l1 = l2 = 0;
	for(int a = x; a <= x+k; a ++){
		for(int b = y; b <= y+k; b ++){
			if(abs(a-b) == abs(x-y) && s[a][b] == 1){
				l1 ++;
			}
			if(x+y+k == a+b && s[a][b] == 1){
				l2 ++;
			}
		}
	}
	// printf("(%d,%d,%d)\nl1=%d,l2=%d\n",x,y,k,l1,l2);
	if(l1 == k+1 && l2 == k+1){
		ans ++;
	}
}

int main(){
	
	int n;
	int i,j;
	char f;
	cin >> n;
	for(i = 1; i <= n; i ++){
		for(j = 1; j <= n; j ++){
			cin >> f;
			s[i][j] = f-'0';
		}
	}
	for(int size = 1; size < n; size ++){
		for(int p = 1; p+size <= n; p ++){
			for(int q = 1; q+size <= n; q ++){
				find(p,q,size);
			}
		}
	}
	cout << ans;
	return 0;
}
2022/10/8 21:36
加载中...