不到一个小时AK,虽然是VP的,舒服,第一次。都简单的一比,没什么可说的。
查找三阶幻方
#pragma comment(linker, "/STACK:102400000,102400000") #include<stdio.h> #include<string.h> #include<stdlib.h> #include<vector> #include<algorithm> #include<iostream> #include<map> #include<queue> #include<stack> #include<string> #include<functional> #include<math.h> //#include<bits/stdc++.h> using namespace std; typedef long long lint; typedef vector<int> VI; typedef pair<int, int> PII; void makedata() { freopen("input.txt", "w", stdout); cout << 200000 << endl; for(int i = 0; i < 200000; i++) cout << 1000000000 << ' '; fclose(stdout); } int a[200][200]; bool check(int x, int y) { int sum = a[x][y] + a[x][y + 1] + a[x][y + 2]; for(int i = 0; i < 3; i++) { if(a[x + i][y] + a[x + i][y + 1] + a[x + i][y + 2] != sum) return false; if(a[x][y + i] + a[x + 1][y + i] + a[x + 2][y + i] != sum) return false; if(a[x][y] + a[x + 1][y + 1] + a[x + 2][y + 2] != sum) return false; if(a[x + 2][y] + a[x + 1][y + 1] + a[x][y + 2] != sum) return false; } return true; } int main() { #ifndef ONLINE_JUDGE freopen("input.txt", "r", stdin); #endif //makedata(); std::ios::sync_with_stdio(0), cin.tie(0); int n, m; cin >> n >> m; for(int i = 0; i < n; i++) { for(int j = 0; j < m; j++) { cin >> a[i][j]; } } int ans = 0; for(int i = 0; i + 2 < n; i++) { for(int j = 0; j + 2 < m; j++) { if(check(i, j)) ans++; } } cout << ans << endl; return 0; }