code.club

 找回密碼
 立即註冊
搜索
查看: 6885|回復: 0
打印 上一主題 下一主題

算四大湖大小以及bool的問題

[複製鏈接]
跳轉到指定樓層
樓主
發表於 2015-9-12 13:22:23 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
網路有一個求四大湖排名的問題如下:

我国有4大淡水湖。
A说:洞庭湖最大,洪泽湖最小,鄱阳湖第三。
B说:洪泽湖最大,洞庭湖最小,鄱阳湖第二,太湖第三。
C说:洪泽湖最小,洞庭湖第三。
D说:鄱阳湖最大,太湖最小,洪泽湖第二,洞庭湖第三。
已知这4个湖的大小均不相等,4个人每人仅答对一个,
请编程按照鄱阳湖、洞庭湖、太湖、洪泽湖的顺序给出他们的大小排名。
我參考了網上的方法寫了如下的程式:

#include <iostream>
using namespace std;

int main(void){

int dt=0,hz=0,by=0,th=0;
int a=0,b=0,c=0,d=0;
//bool a=0,b=0,c=0,d=0;換成bool型態


for(dt=1;dt<=4;dt++){
for(hz=1;hz<=4;hz++){
for(by=1;by<=4;by++){
for(th=1;th<=4;th++)
{
//if((dt==by)||(dt==hz)||(dt==th)||(by==hz)||(by==th)||(hz==th)) continue;
a=((dt==1)+(hz==4)+(by==3));
b=((hz==1)+(dt==4)+(by==2)+(th==3));
c=((hz==4)+(dt==3));
d=((by==1)+(th==4)+(hz==2)+(dt==3));
if((a*b*c*d==1)&&(dt!=by)&&(dt!=th)&&(dt!=hz)&&(by!=hz)&&(by!=th)&&(hz!=th)) {

cout<<"DT is "<<dt<<" and BY is "<<by<<" and TH is "<<th<<" and HZ is "<<hz<<endl;

}
}
}
}
}
return 0;
}

以上的方法確實可以得出一組解答,但怪的是,如果我把紅字的部份變成 bool 型態,則以上的方法會得出二組答案?為何會如此?
回復

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 立即註冊

本版積分規則

小黑屋|手機版|Archiver|code.club  

GMT+8, 2024-12-4 01:38 , Processed in 0.091128 second(s), 18 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表