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 }
    练习深搜
     
    ——每当你想要放弃的时候,就想想是为了什么才一路坚持到现在。
  • 相关阅读:
    JDBC 复习4 批量执行SQL
    JDBC 复习3 存取Oracle大数据 clob blob
    Oracle复习
    Linux命令(1)grep
    JDBC 复习2 存取mysql 大数据
    JDBC 复习1 DBUtil
    php 环境搭建问题
    Windows 批处理 bat 开启 WiFi 菜单选项 设置ID PWD
    Bat 批处理启动和停止Oracle 服务
    docker 学习1 WSL docker ,Windows docker
  • 原文地址:https://www.cnblogs.com/Shy-key/p/6613629.html
Copyright © 2011-2022 走看看