0
李汉魁
中级光能
中级光能
题目:https://ke.codingtang.com/#/problem/problemSub?id=1064
这是包河区2015年信息学竞赛试题之一,本蒟蒻的代码:
#include <iostream>
#include <cstring>
using namespace std;
int m, n;
int a[17][333], c[17];
bool b[17];
bool f;
void dfs(int s) {
if (f == 1) {
return ;
}
int pd = 1;
for (int i = 1; i <= n; i ++) {
if (c[i] != 1) {
pd = 0;
break;
}
}
if (pd == 1) {
f = 1;
return ;
}
for (int i = 1; i <= m; i ++) {
if (!b[i]) {
b[i] = 1;
for (int j = 1; j <= n; j ++) {
c[j] -= a[i][j];
}
dfs(s + 1);
for (int j = 1; j <= n; j ++) {
c[j] += a[i][j];
}
b[i] = 0;
}
}
}
int main() {
while (cin >> m >> n) {
memset(b, 0, sizeof(b));
memset(c, 0, sizeof(c));
f = 0;
for (int i = 1; i <= m; i ++) {
for (int j = 1; j <= n; j ++) {
cin >> a[i][j];
c[j] += a[i][j];
}
}
dfs(1);
if (f == 0) {
cout << "No" << endl;
} else {
cout << "Yes" << endl;
}
}
return 0;
}
提交之后:
不知道怎么写才能AC。恳请各位大佬指教,谢谢!
0
0
0
0
0
0
0
汪恺恒
中级启示者
中级启示者
首先,用scanf输入;
再遍历二维数组,定义一个标志位,判断行和列上是不是只有一个1;
不符合就输出NO,符合输出YES。
求采纳!
0