前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布

poj3740

作者头像
全栈程序员站长
发布2022-07-05 08:38:37
1360
发布2022-07-05 08:38:37
举报
文章被收录于专栏:全栈程序员必看

dfs

View Code

代码语言:javascript
复制
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
using namespace std;

#define maxn 20
#define maxm 305

int n, m;
int map[maxn][maxm];
int num[maxn];
bool g[maxn][maxn];
int rownum[maxn];
bool found;

void input()
{
     
    memset(num, 0, sizeof(num));
for (int i = 0; i < n; i++)
for (int j = 0; j < m; j++)
        {
     
int a;
            scanf("%d", &a);
if (a == 0)
                map[i][j] = 0;
else
            {
     
                map[i][j] = 1;
                num[i]++;
            }
        }
for (int i = 0; i < n; i++)
for (int j = 0; j < n; j++)
        {
     
bool ok = true;
for (int k = 0; k < m; k++)
if (map[i][k] && map[j][k])
                {
     
                    ok = false;
break;
                }
if (ok)
                g[i][j] = true;
else
                g[i][j] = false;
        }
}

void dfs(int tot, int now, int ans)
{
     
if (found)
return;
if (now == n)
    {
     
if (ans == m)
            found = true;
return;
    }
    dfs(tot, now + 1, ans);
bool ok = true;
for (int i = 0; i < tot; i++)
if (!g[rownum[i]][now])
        {
     
            ok = false;
break;
        }
if (ok)
    {
     
        rownum[tot] = now;
        dfs(tot + 1, now + 1, ans + num[now]);
    }
}

int main()
{
     
//freopen("t.txt", "r", stdin);
    while (scanf("%d%d", &n, &m) != EOF)
    {
     
        found = false;
        input();
        dfs(0, 0, 0);
if (found)
            printf("Yes, I found it\n");
else
            printf("It is impossible\n");
    }
return 0;
}

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/110591.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021年8月1,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档