问题标题: 酷町堂:1064 终极挑战

0
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
我要回答