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[]){;}
    ——每当你想要放弃的时候,就想想是为了什么才一路坚持到现在。
  • 相关阅读:
    前端性能优化(css动画篇)
    常用的布局及技巧
    一些有用的技能点
    做webApp遇到的一些坑及解决方案
    mysql5.7.30 编译安装
    windows使用Pandoc将Markdown转换为PDF文件
    源码编译安装keepalived
    源码编译php
    源码编译nginx
    源码编译PHP提示zip错误
  • 原文地址:https://www.cnblogs.com/Shy-key/p/7592878.html
Copyright © 2011-2022 走看看