zoukankan      html  css  js  c++  java
  • 借书问题

    学校放暑假时,信息学辅导教师有n本书要分给参加培训的n个学生。
    如:ABCDE5本书要分给参加培训的张、刘、王、李、孙5位学生,每人只能选1本。
    教师事先让每个人将自己喜爱的书填写在如下的表中,然后根据他们填写的表来分配书本,希望设计一个程序帮助教师求出可能的分配方案,使每个学生都满意。
     
    输入:
    第一行一个数n(学生的个数,书的数量)
    以下共n行,每行n01(由空格隔开),第i行数据表示第i同学对所有书的喜爱情况。0表示不喜欢该书,1表示喜欢该书。
    输出:
    所有的分配方案,每种方案一行:依次输出每个学生分到的书号。
    样例输入:
    5
    1 1 0 0 0
    1 0 0 0 0
    0 0 1 1 1
    0 0 1 0 0
    0 0 0 1 1
    样例输出:
    2 1 4 3 5
    2 1 5 3 4
     
     1 #include <algorithm>
     2 #include <iostream>
     3 
     4 using namespace std;
     5 
     6 int n;
     7 bool map[1005][1005],judge[1005];
     8 int a[1005];
     9 
    10 void DFS(int tot)
    11 {
    12     if(tot==n+1)
    13     {
    14         for(int i=1;i<=n;i++)
    15             cout<<a[i]<<" ";
    16             cout<<endl;
    17         return ;
    18     }
    19     for(int i=1;i<=n;i++)
    20     {
    21         if(map[tot][i]&&!judge[i])
    22         {
    23             map[tot][i]=0,judge[i]=1;
    24             a[tot]=i;
    25             DFS(tot+1);
    26             map[tot][i]=1,judge[i]=0;
    27         }
    28     }
    29     return ;
    30 }
    31 
    32 int main()
    33 {
    34     cin>>n;
    35     for(int i=1;i<=n;i++)
    36         for(int j=1;j<=n;j++)
    37             cin>>map[i][j];
    38     DFS(1);
    39     
    40     return 0;
    41 }
    练习深搜
     
    ——每当你想要放弃的时候,就想想是为了什么才一路坚持到现在。
  • 相关阅读:
    centos7安装gitlab
    jenkins 部署k8s-jar包项目
    jenkins部署k8s项目-CICD
    pipeline
    jenkins打包
    jenkins 按角色设置管理权限
    1 jenkins的介绍和安装
    PyTables的下载和安装
    解决python报错:ImportError: No module named shutil_get_terminal_size 的方法
    nodejs安装失败
  • 原文地址:https://www.cnblogs.com/Shy-key/p/6613629.html
Copyright © 2011-2022 走看看