zoukankan      html  css  js  c++  java
  • 受约束的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

  • 相关阅读:
    PHP
    PHP
    PHP
    网站页面引导操作
    Solr与Tomcat的整合
    POI操作文档内容
    HashTable和HashMap的区别
    ArrayList、LinkedList、HashMap底层实现
    正则表达式语法
    Java并发编程:线程间通信wait、notify
  • 原文地址:https://www.cnblogs.com/liuzhuqing/p/7480666.html
Copyright © 2011-2022 走看看