• 实验手册实验4附加题


    某刑侦大队对涉及6个嫌疑人的一桩疑案进行分析,得出初步结论:

    1 A、B至少有一人作案;

    2 A、E、F这3人中至少有两人参加作案;

    3 A、D不可能是同案犯;

    4 B、C或同时作案,或与本案无关;

    5 C、D中有且仅有1人作案;

    6 如果D没有参与作案,则E也不可能参与作案。
    试编程,找出作案人。

    在实验课开始前蹲在实验室做出来了,先做个存档,回去再分析。

    后记:采用枚举法,S[0]~S[5]分别表示ABCDEF,1表示是嫌疑人,0表示不是嫌疑人;难点在于逻辑表达。注释如下

    s[0] + s[1] >= 1    /* A、B至少有一人作案 */
    s[0] + s[4] + s[5] >= 2    /* A、E、F这3人中至少有两人参加作案 */
    s[0] + s[3] < 2         /*A、D不可能是同案犯 */
    s[1]+s[2]==2 || s[1]+s[2]==0      /* B、C或同时作案,或与本案无关 */
    s[2]+s[3] == 1        /* C、D中有且仅有1人作案 */
    s[3]+s[4] == 0 || s[3] == 1  /* 如果D没有参与作案,则E也不可能参与作案,
                                  * 即:要么D、E都没有参与作案,要么D参与了作案而 
                                  * E可能作案也可能不作案,所以此时不写E的条件 */

    完整代码如下

    View Code
     1 #include<stdio.h>
     2 #include<stdlib.h>
     3 int main()
     4 {
     5     int s[6];
     6     
     7     for ( s[0] = 0; s[0] <= 1; s[0]++ )
     8     {
     9         for ( s[1] = 0; s[1] <= 1; s[1]++ )
    10         {
    11             for ( s[2] = 0; s[2] <= 1; s[2]++ )
    12             {
    13                 for ( s[3] = 0; s[3] <= 1; s[3]++ )
    14                 {
    15                     for ( s[4] = 0; s[4] <= 1; s[4]++ )
    16                     {
    17                         for ( s[5] = 0; s[5] <= 1; s[5]++ )
    18                         
    19                         if( s[0] + s[1] >= 1 )
    20                         {
    21                             if ( s[0] + s[4] + s[5] >= 2 )
    22                             {
    23                                  if( s[0] + s[3] < 2 )
    24                                  {
    25                                      if ( s[1]+s[2]==2 || s[1]+s[2]==0 )
    26                                      {
    27                                           if ( s[2]+s[3] == 1 )
    28                                           {
    29                                                if( s[3]+s[4] == 0 || s[3] == 1 )
    30                                                {
    31                                                    printf("A=%d\n", s[0]);
    32                                                    printf("B=%d\n", s[1]);
    33                                                    printf("C=%d\n", s[2]);
    34                                                    printf("D=%d\n", s[3]);
    35                                                    printf("E=%d\n", s[4]);
    36                                                    printf("F=%d\n", s[5]);
    37                                                }
    38                                           }
    39                                      }
    40                                  }
    41                             }
    42                         }
    43                         
    44                     }
    45                 }
    46             }
    47         }
    48     }
    49     system("pause");
    50     return 0;
    51 }
  • 相关阅读:
    114. Flatten Binary Tree to Linked List 把二叉树变成链表
    426. Convert Binary Search Tree to Sorted Doubly Linked List把bst变成双向链表
    微服务之如何建模微服务
    我的博客即将同步至腾讯云+社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=3t37r4hauhq8c
    剑指offer之面试题2:实现Singleton模式
    微服务之演化式架构师(二)
    ASP.NET Core 框架本质学习
    java之maven之maven的使用
    java之maven之初识maven
    java之mybatis整合spring
  • 原文地址:https://www.cnblogs.com/joyeecheung/p/2758634.html
Copyright © 2020-2023  润新知