zoukankan      html  css  js  c++  java
  • 洛谷—— P1657 选书

    https://www.luogu.org/problem/show?pid=1657

    题目描述

    学校放寒假时,信息学奥赛辅导老师有1,2,3……x本书,要分给参加培训的x个人,每人只能选一本书,但是每人有两本喜欢的书。老师事先让每个人将自己喜欢的书填写在一张表上。然后根据他们填写的表来分配书本,希望设计一个程序帮助老师求出所有可能的分配方案,使每个学生都满意。

    输入输出格式

    输入格式:

    第1行:一个数x

    第2行~第1+x行:每行两个数,表示ai喜欢的书的序号

    输出格式:

    只有一个数:总方案数total。

    输入输出样例

    输入样例#1:
    5
    1 3
    4 5
    2 5
    1 4
    3 5
    输出样例#1:
    2

    说明

    所有数据:x<=20

    (世界上最难出数据的题目,没有之一……)

    数据诡异、特判x==0的情况

     1 #include <cstdio>
     2 
     3 const int N(26);
     4 struct Book {
     5     int a,b;    
     6 }book[26];
     7 int n,ans;
     8 bool use[N];
     9 
    10 void DFS(int now)
    11 {
    12     if(now==n+1) { ans++; return ; }
    13     if(!use[book[now].a])
    14     {
    15         use[book[now].a]=1;
    16         DFS(now+1);
    17         use[book[now].a]=0;
    18     }
    19     if(!use[book[now].b])
    20     {
    21         use[book[now].b]=1;
    22         DFS(now+1);
    23         use[book[now].b]=0;
    24     }
    25 }
    26 
    27 int Presist()
    28 {
    29     scanf("%d",&n);
    30     for(int i=1; i<=n; ++i)
    31         scanf("%d%d",&book[i].a,&book[i].b);
    32     DFS(1); if(!n) ans=0;
    33     printf("%d
    ",ans);
    34     return 0;
    35 }
    36 
    37 int Aptal=Presist();
    38 int main(int argc,char*argv[]){;}
    ——每当你想要放弃的时候,就想想是为了什么才一路坚持到现在。
  • 相关阅读:
    react-native项目之样式总结
    charles捕获手机端请求数据
    git常用命令常用场景
    window.open新打开窗口与新开标签页
    IE浏览器兼容性模式
    atom编辑器社区插件推荐
    操作linux命令
    java.lang.OutOfMemoryError处理错误
    SQLServer中ISNULL、NULLIF和CONVERT函数
    plsql 查询结果窗口 不正常
  • 原文地址:https://www.cnblogs.com/Shy-key/p/7592878.html
Copyright © 2011-2022 走看看