C語(yǔ)言中的盜賊(小偷)問(wèn)題詳解
問(wèn)題描述:警察審問(wèn)4名竊賊嫌疑犯?,F(xiàn)在已知,這4人當(dāng)中僅有一名是竊賊,還知道這4個(gè)人中的每個(gè)人要么是誠(chéng)實(shí)的,要么總是說(shuō)謊。
這4個(gè)人給警察的回答如下。
甲說(shuō):“乙沒(méi)有偷,是丁偷的。”
乙說(shuō):“我沒(méi)有偷,是丙偷的。”
丙說(shuō):“甲沒(méi)有偷,是乙偷的。”
丁說(shuō):“我沒(méi)有偷。”
請(qǐng)根據(jù)這4個(gè)人的回答判斷誰(shuí)是竊賊。
分析過(guò)程:突破點(diǎn)從丁開(kāi)始,因?yàn)楦鶕?jù)丁的回答是無(wú)法判斷的,而且我們可以發(fā)現(xiàn)甲乙丙三人的回答是十分相似的(如果不是ta,就是ta),我們現(xiàn)在先不去考慮甲乙丙誰(shuí)說(shuō)謊誰(shuí)不說(shuō)謊。我們先把甲乙丙丁設(shè)成ABCD,變量為1的是盜賊,那么
甲—B+D==1;
乙—B+C==1;
丙—A+B==1;
丁—A+B+C+D==1;
根據(jù)這四個(gè)人可以得到這四個(gè)條件
假定一個(gè)人是盜賊 代入這四個(gè)條件中
第一種:
#include <stdio.h>
int main()
{
int A,B,C,D;
for(A=0; A<=1; A++)
for(B=0; B<=1; B++)
for(C=0; C<=1; C++)
for(D=0; D<=1; D++)
{
if(B+D==1&&B+C==1&&A+B==1&&A+B+C+D==1)
if(A)
printf("甲是竊賊\n");
else if(B)
printf("乙是竊賊\n");
else if(C)
printf("丙是竊賊\n");
else
printf("丁是竊賊\n");
}
}第二種:只用一個(gè)for循環(huán)就可以了 假定一個(gè)人為盜賊代入條件
#include <stdio.h>
int main()
{
int i,A=1,B=0,C=0,D=0;
for(i=0; i<=1; i++)
if(B+D==1&&B+C==1&&A+B==1)
break;
else
{
if(i==1)
{
A=0;
B=1;
}
if(i==2)
{
B=0;
C=1;
}
if(i==3)
{
C=0;
D=1;
}
}
if(i==1)
printf("甲是盜賊");
if(i==2)
printf("乙是盜賊");
if(i==3)
printf("丙是盜賊");
if(i==4)
printf("丁是盜賊");
}到此這篇關(guān)于C語(yǔ)言中的盜賊(小偷)問(wèn)題詳解的文章就介紹到這了,更多相關(guān)C語(yǔ)言盜賊問(wèn)題內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
淺析VSCode launch.json中的各種替換變量的意思 ${workspaceFolder} ${file} $
這篇文章主要介紹了VSCode launch.json中的各種替換變量的意思 ${workspaceFolder} ${file} ${fileBasename} ${fileDirname}等,非常不錯(cuò)具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-03-03
c++實(shí)現(xiàn)獲取當(dāng)前時(shí)間(精確至秒,毫秒和微妙)
這篇文章主要為大家詳細(xì)介紹了c++實(shí)現(xiàn)獲取當(dāng)前時(shí)間(可以精確至秒,毫秒和微妙)的相關(guān)知識(shí),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以參考一下2023-11-11
鏈接庫(kù)動(dòng)態(tài)鏈接庫(kù)詳細(xì)介紹
靜態(tài)鏈接庫(kù).lib和動(dòng)態(tài)鏈接庫(kù).dll。其中動(dòng)態(tài)鏈接庫(kù)在被使用的時(shí)候,通常還提供一個(gè).lib,稱為引入庫(kù),它主要提供被Dll導(dǎo)出的函數(shù)和符號(hào)名稱,使得鏈接的時(shí)候能夠找到dll中對(duì)應(yīng)的函數(shù)映射2012-11-11
C/C++ Socket設(shè)置接收超時(shí)時(shí)間的多種方法
網(wǎng)絡(luò)編程中經(jīng)常需要處理的一個(gè)問(wèn)題就是如何正確地處理Socket超時(shí),對(duì)于C/C++,有幾種常用的技術(shù)可以用來(lái)設(shè)置Socket接收超時(shí)時(shí)間,在這篇文章中,我們將詳細(xì)介紹如何在C/C++中設(shè)置Socket的非阻塞模式以及如何配置接收超時(shí)時(shí)間,需要的朋友可以參考下2024-01-01

