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

    题目描述

    学校放寒假时,信息学奥赛辅导老师有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

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

    思路:搜索

    #include<cstdio>
    #include<cstring>
    #include<iostream>
    #include<algorithm>
    using namespace std;
    int n,ans;
    int a[21],b[21],vis[21];
    void dfs(int tot){
        if(tot==n){
            ans++;
            return ;
        }
        if(vis[a[tot+1]]&&vis[b[tot+1]])    return ;
        if(!vis[a[tot+1]])    vis[a[tot+1]]=1,dfs(tot+1),vis[a[tot+1]]=0;
        if(!vis[b[tot+1]])    vis[b[tot+1]]=1,dfs(tot+1),vis[b[tot+1]]=0;
    }
    int main(){
        scanf("%d",&n);
        if(n==0){ cout<<"0";return 0; }
        for(int i=1;i<=n;i++)
            scanf("%d%d",&a[i],&b[i]);
        dfs(0);
        cout<<ans;
    }
    细雨斜风作晓寒。淡烟疏柳媚晴滩。入淮清洛渐漫漫。 雪沫乳花浮午盏,蓼茸蒿笋试春盘。人间有味是清欢。
  • 相关阅读:
    分布式计算原理
    消息的有序性
    CAP再解释
    数据建模
    领导层级的跨越
    如何上云|什么是多机房多活架构
    mysql导出导入数据
    Qt 串口 封装好的类 直接使用
    C++ 在类的定义时初始化非静态变量
    Qt error C3646: 未知重写说明符
  • 原文地址:https://www.cnblogs.com/cangT-Tlan/p/7862308.html
Copyright © 2011-2022 走看看