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 }
    练习深搜
     
    ——每当你想要放弃的时候,就想想是为了什么才一路坚持到现在。
  • 相关阅读:
    关于HTML标签
    windows bat 命令
    maven 基本用法
    idea 永久激活
    mysql 性能测试 mysqlslap 的使用介绍
    Javafx 入门教程(一)
    websocket server 服务端工具
    OPC 技术
    以http为例解读OSI七层协议
    Javafx 入门教程前言
  • 原文地址:https://www.cnblogs.com/Shy-key/p/6613629.html
Copyright © 2011-2022 走看看