You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
95 lines
2.1 KiB
95 lines
2.1 KiB
2 years ago
|
## 完美方阵
|
||
|
|
||
|
小明很喜欢矩阵,在他的心目中这样的矩阵能够被称为“完美方阵”:这个方阵的 $n$ 行与 $n$ 列当中,每行的数字之和必须相同,每列的数字之和也必须相同。
|
||
|
|
||
|
现在你找来一些方阵,你想知道小明是否愿称之为完美方阵。
|
||
|
|
||
|
**输入格式**
|
||
|
第一行输入一个数 $n$ ,表示一个方阵的行列数;
|
||
|
之后 $n$ 行,每行 $n$ 个数,表示方阵中的每个元素 ,以空格隔开;
|
||
|
|
||
|
**输出格式**
|
||
|
若这个方阵是完美方阵,输出“$YES$”,否则输出“$NO$”。
|
||
|
|
||
|
**输入样例**
|
||
|
```cpp {.line-numbers}
|
||
|
3
|
||
|
3 4 8
|
||
|
7 2 6
|
||
|
5 9 1
|
||
|
```
|
||
|
|
||
|
**输出样例**
|
||
|
```cpp {.line-numbers}
|
||
|
YES
|
||
|
```
|
||
|
|
||
|
|
||
|
#### 原始AC版本
|
||
|
```cpp {.line-numbers}
|
||
|
#include <iostream>
|
||
|
using namespace std;
|
||
|
const int N = 110;
|
||
|
int a[N][N];
|
||
|
|
||
|
int main() {
|
||
|
int n;
|
||
|
cin >> n;
|
||
|
for (int i = 1; i <= n; i++)
|
||
|
for (int j = 1; j <= n; j++)
|
||
|
cin >> a[i][j];
|
||
|
//首行累加和
|
||
|
int s = 0;
|
||
|
for (int i = 1; i <= n; i++) s += a[1][i];
|
||
|
|
||
|
//所有行进行判断
|
||
|
for (int i = 1; i <= n; i++) {
|
||
|
int t = 0;
|
||
|
for (int j = 1; j <= n; j++) t += a[i][j];
|
||
|
if (t != s) {
|
||
|
puts("NO");
|
||
|
return 0;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// 所有列进行判断
|
||
|
for (int j = 1; j <= n; j++) {
|
||
|
int t = 0;
|
||
|
for (int i = 1; i <= n; i++) t += a[i][j];
|
||
|
if (t != s) {
|
||
|
puts("NO");
|
||
|
return 0;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
puts("YES");
|
||
|
return 0;
|
||
|
}
|
||
|
```
|
||
|
|
||
|
#### 优化后版本
|
||
|
```cpp {.line-numbers}
|
||
|
#include <iostream>
|
||
|
using namespace std;
|
||
|
const int N = 110;
|
||
|
int a[N], b[N];
|
||
|
|
||
|
int main() {
|
||
|
int n;
|
||
|
cin >> n;
|
||
|
for (int i = 1; i <= n; i++)
|
||
|
for (int j = 1; j <= n; j++) {
|
||
|
int x;
|
||
|
cin >> x;
|
||
|
a[j] += x;
|
||
|
b[i] += x;
|
||
|
}
|
||
|
for (int i = 1; i <= n; i++)
|
||
|
if (a[i] != a[1] || b[i] != a[1]) {
|
||
|
puts("NO");
|
||
|
return 0;
|
||
|
}
|
||
|
puts("YES");
|
||
|
return 0;
|
||
|
}
|
||
|
```
|