谁在说谎

张三说李四在说谎,李四说王五在说谎,王五说张三和李四都在说谎。现在问:这三
人中到底谁说的是真话,谁说的是假话?

思路:

        每个人说话都有真假可能,用0代表假,1代表真,假如张三说的是真话,那么李四就

为假,假如张三说的是假话,那么李四就为真,判断每个人说真话和说假话的情况(注意在

判断王五的时候假如王五说的是真话那么很显然张李为假,假如王五说的是假话,那么张李

两人至少是有一个是说真话的)

代码:

#include
using namespace std;
int main()
{
	int x,y,z;
	for (x=0;x<2;x++)
	for (y=0;y<2;y++)
	for (z=0;z<2;z++)
	{
		if ((!x&&y||x&&!y)//张三说的话可能性 
		&&(!y&&z||y&&!z)//李四说的可能性 
		&&(!z&&x+y>0||z&&!x&&!y))//王五说的可能性 
	     {
	     	x?cout<<"张三说真话"<


你可能感兴趣的:(谁在说谎)