• 受约束的10人参赛问题


    A、B、C、D、E、F、G、H、I、J 共10名学生有可能参加本次计算机竞赛,也可能不参加。

    因为某种原因,他们是否参赛受到下列条件的约束:

       1. 如果A参加,B也参加;

       2. 如果C不参加,D也不参加;

       3. A和C中只能有一个人参加;

       4. B和D中有且仅有一个人参加;

       5. D、E、F、G、H 中至少有2人参加;

       6. C和G或者都参加,或者都不参加;

       7. C、E、G、I中至多只能2人参加  

       8. 如果E参加,那么F和G也都参加。

       9. 如果F参加,G、H就不能参加

       10. 如果I、J都不参加,H必须参加

    请编程根据这些条件判断这10名同学中参赛者名单。如果有多种可能,则输出所有的可能

    情况。每种情况占一行。参赛同学按字母升序排列,用空格分隔。

    比如:

    C D G J

    就是一种可能的情况。

     #include

    void Test(int comb)
    {
        int a[10], i;
       
        for(i = 0; i < 10; a[i] = (comb >> i++) & 1);
       
        if(!a[0] || a[1])
        if(a[2] || !a[3])
        if(!a[0] || !a[2])
        if(a[1] && !a[3] || !a[1] && a[3])
        if(!(a[3] && !a[4] && !a[5] && !a[6] && !a[7] ||
            !a[3] && a[4] && !a[5] && !a[6] && !a[7] ||
            !a[3] && !a[4] && a[5] && !a[6] && !a[7] ||
            !a[3] && !a[4] && !a[5] && a[6] && !a[7] ||
            !a[3] && !a[4] && !a[5] && !a[6] && a[7] ||
            !a[3] && !a[4] && !a[5] && !a[6] && !a[7]))
        if(a[2] && a[6] || !a[2] && !a[6])
        if(!(!a[2] && a[4] && a[6] && a[8] ||
            a[2] && !a[4] && a[6] && a[8] ||
            a[2] && a[4] && !a[6] && a[8] ||
            a[2] && a[4] && a[6] && !a[8] ||
            a[2] && a[4] && a[6] && a[8]))
        if(!a[4] || a[5] && a[6])
        if(!a[5] || !a[6] && !a[7])
        if(a[8] || a[9] || a[7])
        {
            for(i = 0; i < 10; i++)
                if(a[i]) printf("%c ", 'A' + i);
            printf("\n");
        }
    }

    int main()
    {
        int i;
        for(i = 1; i <= 0x3FF; Test(i++));
        return 0;
    }

    结果是
    B C G H
    C D G H
    C D G J
    B C G H J
    C D G H J

  • 相关阅读:
    celery的使用和原理
    内核通知链
    数据流中的中位数
    二叉搜索树的后序遍历序列
    Javascript设计模式系统讲解与应用,JS设计模式详解
    微服务系列之ZooKeeper注册中心和Nacos注册中心
    微信小程序开发详解:小程序入门与实战-纯正商业级应用技术
    Java零基础该怎么去学习Java?学好Java应该如何去做?
    Flutter从入门到进阶实战携程网App项目详解
    Python升级3.6强力Django+杀手级Xadmin打造在线教育平台
  • 原文地址:https://www.cnblogs.com/liuzhuqing/p/7480666.html
Copyright © 2020-2023  润新知