zoukankan      html  css  js  c++  java
  • Who is lier?

    狱警发现一囚室的窗户栅栏被剪断了。该囚室有四个囚犯。
    	A说:不是我
    	B说:是C
    	C说:是D
    	D说:C胡说
    已知三个人说真话,一个人说假话。请找出说谎的人。
    
    解析:
    可能的状况有lier=‘A',lier=’B',lier=‘C',lier=‘D'。
    枚举是按照这 4 种假定逐一地去测试4个人的话有几个人的话是真话。如果不满足3句话为真,就否定这一个假定。
    when lier=‘A',代入四句话中
    说话人	说的话	关系表达式	值
    A	不是我	lier!=‘A’	0
    B	是C	Lier==‘C’	0
    C	是D	Lier==‘D’	0
    D	C胡说	Lier!=‘D’	1
    结论:A没有说谎、、、、、
    用枚举法分析完后用画出框图,一目了然
    
    下面是我根据程序框图写出的程序,仅供参考
    
    
    #include<iostream>
    using namespace std;
    int main()
    {
    	int k,sum,g;
    	char lier;
    	for(k=0;k<4;k++)
    	{
    		lier='A'+k;
    		sum=(lier!='A')+(lier=='C')+(lier=='D')+(lier!='D');//只有一个lier,所以当sum=3时,有一个lier成立
    		if(sum==3)
    		{
    			g=1;
    			break;
    		}
    	}
    	if(g!=1)
    		cout<<"无解"<<endl;
    	else
    		cout<<"lier为"<<lier<<endl;
    	return 0;
    }

    
    
    
    

    
    
    
  • 相关阅读:
    MySQL7:性能优化
    MySQL6:视图
    MySQL5:触发器
    MySQL4:索引
    MySQL3:存储过程和函数
    MySQL1:MySQL函数汇总
    MySQL2:四种MySQL存储引擎
    Spring7:基于注解的Spring MVC(下篇)
    Spring6:基于注解的Spring MVC(上篇)
    Linux查看端口号
  • 原文地址:https://www.cnblogs.com/IT-hexiang/p/4084618.html
Copyright © 2011-2022 走看看