【YouXue 1019】鹿死谁手

鹿死谁手  

古代有一个皇帝,命令A、B、C、D、E、F、G、H的八员大将陪同他外出打猎。经过一番追逐,有一员大将的一支箭射中了一只鹿,是哪一员大将射中的,开始谁也不清楚。这时候,皇帝叫大家先不要去看箭上刻写的姓名,而要大家先猜猜究竟是谁射中的。八员大将众说纷纭。   

A说:“或者是H将军射中的,或者是F将军射中的。”   

B说:“鹿肯定是我射中的啦。”   

C说:“我可以断定是G将军射中的。”   

D说:“怎么说也不可能是B将军射中的!”   

E说:“A将军猜错了。”   

F说:“不会是我射中的,也不是H将军射中的。”   

G说:“绝对不是C将军射中的。”   

H说:“我同意A将军的观点。”   

猜完之后,皇帝命令把鹿身上的箭拨出来验看,证实八员大将中有n个人猜对了。问:鹿是谁射死的?   


【输入格式 】  

一个整数n,(0<=n<=8), 表示有n人猜对了。


【输出格式 】  

仅一行含一个字符,是对应输入n的唯一解,即射鹿之人。

  如果是无解或者多个解,则输出DONTKNOW。


【输入样例】 


【输出样例】

G


【分析】

简单的条件罗列,说对了返回1,否则返回0,所有条件的和即为n,从A枚举到H即可。


【AC代码】

#include<stdio.h>  
int main()  
{  
    int i,j,k=0,n;  
    scanf("%d",&n);  
    for(i='A';i<='H';i++)  
    {  
        if(((i=='H'||i=='F')+(i=='B')+(i=='G')+(i!='B')+(i!='H'&&i!='F')+(i!='F'&&i!='H')+(i!='C')+(i=='H'||i=='F'))==n)  
        {  
            k++;  
            if(k==2)  break;  
            j=i;  
        }  
    }  
    if(k==0||k==2)  
    printf("DONTKNOW");  
    else  
    printf("%c",j);  
    return 0;  
} 


你可能感兴趣的:(c)