【C/C++】某地刑警大队对A、B、C、D、E和F共6个嫌疑人进行作案与否的排查,存在如下6条线索:

问题 AG: 疑案分析

时间限制: 1.000 Sec  内存限制: 128 MB

题目描述

某地刑警大队对A、B、C、D、E和F共6个嫌疑人进行作案与否的排查,存在如下6条线索:
(1)A、B至少有1人作案;
(2)A、E、F3人中至少有2人参与作案;
(3)A、D不可能是同案犯;
(4)B、C或同时作案,或与本案无关;
(5)C、D中有且仅有1人作案;
(6)如果D没有参与作案,则E也不可能参与作案。
请编程找出作案人。

输入

输出

输出作案人。

样例输出 Copy

格式为(以下结果不是最终答案):
A:不是罪犯
B:是罪犯
C:是罪犯
D:不是罪犯
E:不是罪犯
F:是罪犯

分析和AC代码:

/**
 * a b c d e f 六个人各只有两种可能 那就是是罪犯或者不是罪犯 用0表示不犯罪 1表示犯罪
 * 所以将a b c d e f六个变量依次循环0和1两个值依次判断组成的六个值是否符合6条线索的要求即可
 * 共有2的6次方===32种可能的0 1组合 对其依次判断即可 符合条件即可输出 理论上只有一个符合条件的0 1组合
 */
/**
 * Created By Liu Xianmeng On 2022/12/28
 */
#include <bits/stdc++.h>
using namespace std;
int main() {
    /**
     * a b c d e f 六个人各只有两种可能 那就是是罪犯或者不是罪犯 用0表示不犯罪 1表示犯罪
     * 所以将a b c d e f六个变量依次循环0和1两个值依次判断组成的六个值是否符合6条线索的要求即可
     * 共有2的6次方===32种可能的0 1组合 对其依次判断即可
     */
    int a, b, c, d, e, f;
    for(a=0;a<=1; ++a){
        for(b=0;b<=1; ++b){
            for(c=0;c<=1; ++c){
                for(d=0;d<=1; ++d){
                    for(e=0;e<=1; ++e){
                        for(f=0;f<=1; ++f){
                            if(
                                    (a+b)>=1 &&
                                    (a+e+f)>=2 &&
                                    (a+d) != 2 &&
                                    (b+c == 2 || b+c == 0) &&
                                    (c+d == 1) &&
                                    (d+e == 0 || d==1)
                            ){
                                printf("A:%s\n", a==0?"不是罪犯":"是罪犯");
                                printf("B:%s\n", b==0?"不是罪犯":"是罪犯");
                                printf("C:%s\n", c==0?"不是罪犯":"是罪犯");
                                printf("D:%s\n", d==0?"不是罪犯":"是罪犯");
                                printf("E:%s\n", e==0?"不是罪犯":"是罪犯");
                                printf("F:%s\n", f==0?"不是罪犯":"是罪犯");
                            }
                        }
                    }
                }
            }
        }
    }
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值