這是大一的時(shí)候?qū)懙囊粋€(gè)小程序,問題描述為確認(rèn)小偷,有四個(gè)人A、B、C、D,他們中有一個(gè)是小偷,然后這四人分別說(shuō)
A說(shuō):B沒有偷,是D偷的。
B說(shuō):我沒有偷,是C偷的。C說(shuō):A沒有偷,是B偷的。
D說(shuō):我沒有偷。
A、B、C、D四人要么說(shuō)真話,要么說(shuō)假話。
那么根據(jù)思路,A和B,A和C,A和D,B和C不能同時(shí)成立。在這里假設(shè)值為0是假話,值為1是真話。
/*A:B沒有偷,是D偷的。B:我沒有偷,是C偷的。C:A沒有偷,是B偷的。D:我沒有偷。*/#include <stdio.h>#include <stdlib.h>int main(){ int a,b,c,d; for(a=0;a<2;a++) for(b=0;b<2;b++) for(c=0;c<2;c++) for(d=0;d<2;d++) if((a+b<=1)&&(b+c<=1)&&(a+c<=1)&&(a+d<=1)&&(a+b+c+d>=0)) { if (a == 1)PRintf("D is thief/n"); if (b == 1)printf("C is thief/n"); if (c == 1)printf("B is thief/n"); if (d == 1)printf("D isn't thief/n"); printf("A:%d B:%d C:%d D:%d/n",a,b,c,d); } system("pause"); return 0;}從結(jié)果可以得知答案不唯一,題目的條件并沒有給完全,而且通過(guò)修改if條件里最后一句(a+b+c+d>=0),可以得知最多只有兩人說(shuō)真話。這個(gè)程序采用窮舉的思想,把所有的情況都嘗試一遍,就目前來(lái)說(shuō),我并沒有想到更好的代碼。
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注