6个嫌疑犯

ContractedBlock.gif ExpandedBlockStart.gif Code
using System;
using System.Collections.Generic;
using System.Text;
using System.Collections; 
/*
 * 某地刑侦大队对涉及六个嫌疑人的一桩疑案进行分析: 
 * A、B至少有一人作案; 
 * A、E、F三人中至少有两人参与作案;
 * A、D不可能是同案犯;
 * B、C或同时作案,或与本案无关;
 * C、D中有且仅有一人作案; 
 * 如果D没有参与作案,则E也不可能参与作案。
 * 试编一程序,将作案人找出来。 
 
*/
namespace ArithmeticDemo
{
    
public class SixSuspect
    {
      
        
public static void Main()
        {
           String[] persons 
= { "A""B""C""D""E""F" };
            
for (int i = 0; i <= 63; i++
            { 
                
int t = i; 
                
int[] num = new int[6]; 
                
int j = 5
                
for (; j >= 0; j--
                {
                    
// 换成二进制数码,保存在一个6个元素的一维数组中
                    if (t / 2 > 0)
                    { 
                        num[j] 
= t % 2
                        t 
= t / 2
                    } 
                    
else 
                    { 
                        num[j] 
= t;
                        
break
                    } 
                } 
                
// num[0]--num[5]代表A--F 
                if (num[0+ num[1>= 1)// 代表AB至少有一个人作案 
                {                    
                    
if (num[0+ num[4+ num[5>= 2)  // AEF 至少2个人作案 
                    {                        
                        
if (num[0+ num[3<= 1)  // AD 不是同案犯。但可能都没作案或其中一个作案 
                        {                            
                            
if ((num[1+ num[2== 0 || num[1+ num[2== 2)) // BC 同时作案,或者同时没作案 
                            {                                 
                                
if (num[2+ num[3== 1)// CD肯定有一个人作案了 
                                {
                                    
if (num[3== 0 && num[4== 0 || num[3== 1)  // 如果D没作案且E也没作案,或者 D作案了了
                                    {
                                        
for (int index = 0; index < num.Length; index++)
                                        {
                                            
if (num[index] == 1)
                                            {
                                                Console.Write(persons[index] 
+ ",");
                                            }
                                        } 
                                    }                                       
                                } 
                            } 
                        } 
                    } 
                } 
            }
            Console.ReadLine();
        }
    }
}

转载于:https://www.cnblogs.com/jianlinglo/archive/2009/01/12/1374428.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值