1 条题解
-
0
每个点最多对应四个位置要求相同。可以指考虑左上部分。看看左上部分转四次有多少个不同的,来看看至少怎么修改。
#include <bits/stdc++.h> using namespace std; int t, n; char a[105][105]; int main() { cin >> t; while (t--) { cin >> n; for (int i = 1; i <= n; i++) for (int j = 1; j <= n; j++) cin >> a[i][j]; int ans = 0; if (n % 2 == 0) { int mid = n / 2; for (int i = 1; i <= n / 2; i++) for (int j = 1; j <= n / 2; j++) { //看看左上片旋转时有多少个相同的 //旋转后的位置可以纸上画画推一下 int now = 1; if (a[j][n - i + 1] == a[i][j]) now++; if (a[n - i + 1][n - j + 1] == a[i][j]) now++; if (a[n - j + 1][i] == a[i][j]) now++; ans += min(now, 4 - now); } } else { int mid = n / 2; for (int i = 1; i <= n / 2 + 1; i++) for (int j = 1; j <= n / 2; j++) { //看看左上片旋转时有多少个相同的 //旋转后的位置可以纸上画画推一下 int now = 1; if (a[j][n - i + 1] == a[i][j]) now++; if (a[n - i + 1][n - j + 1] == a[i][j]) now++; if (a[n - j + 1][i] == a[i][j]) now++; ans += min(now, 4 - now); } } cout << ans << "\n"; } return 0; }
- 1
信息
- ID
- 1100
- 时间
- 2000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- 递交数
- 6
- 已通过
- 5
- 上传者