问题及代码:
/*
*Copyright (c)2014,烟台大学计算机与控制工程学院
*All rights reserved.
*文件名称:count.cpp
*作 者:单昕昕
*完成日期:2014年10月27日
*版 本 号:v1.0
*
*问题描述:警察局抓住了A、B、C、D四名盗窃嫌疑犯,其中只有一人是小偷。在审问时,A说:“我不是小偷”;B说:“C是小偷”;C说:“小偷肯定是D”;D说:“C在冤枉好人”。现在已经知道这四人中有三人说的是真话,一人说的是假话。请问到底谁是小偷?
*程序输出:辨别的结果,到底小偷是谁。
*/
#include <iostream>
using namespace std;
int main()
{
int a,b,c,d,count=0;
cout<<"辨别的结果为:"<<endl;
for(a=1; a>=0; a--) //穷举a是否是小偷
for(b=1; b>=0; b--) //穷举b是否是小偷
for(c=1; c>=0; c--) //穷举c是否是小偷
for(d=1; d>=0; d--) //穷举d是否是小偷
if((a==0&&c==1&&d==1)||(a==0&&d==1&&d==0)||(c==1&&d==1&&d==0)&&(a==0&&c==1&&d==0) )//判断输出成立的条件
{
++count;
cout<<"方案"<<count<<": "<<endl;
cout<<"A"<<":"<<a<<endl; //0代表不是小偷,1代表是小偷。
cout<<"B"<<":"<<b<<endl;
cout<<"C"<<":"<<c<<endl;
cout<<"D"<<":"<<d<<endl;
}
return 0;
}
运行结果:
知识点总结:
四重循环。。
还不会用。。只能想到这样了。。
学习心得:
不会四重循环。不会把0/1变成否/是。(⊙o⊙)…