欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C語(yǔ)言猜兇手及類(lèi)似題目的實(shí)現(xiàn)示例

 更新時(shí)間:2022年01月09日 15:53:55   作者:Naion  
本文主要介紹了C語(yǔ)言猜兇手及類(lèi)似題目的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

描述:

日本某地發(fā)生了一件謀殺案,警察通過(guò)排查確定殺人兇手必為4個(gè)嫌疑犯的一個(gè)。

以下為4個(gè)嫌疑犯的供詞:

A說(shuō):不是我。        

B說(shuō):是C。

C說(shuō):是D。

D說(shuō):C在胡說(shuō)

已知3個(gè)人說(shuō)了真話(huà),1個(gè)人說(shuō)的是假話(huà)。

現(xiàn)在請(qǐng)根據(jù)這些信息,寫(xiě)一個(gè)程序來(lái)確定到底誰(shuí)是兇手。

思路及分析:

        從來(lái)沒(méi)有做過(guò)類(lèi)似題目的同學(xué)第一次看見(jiàn)這道題,可能有點(diǎn)發(fā)懵。然后開(kāi)始考慮假設(shè),排列組合,枚舉等等...但是這道題的代碼結(jié)果會(huì)讓你大吃一驚。

        首先,要考慮的是如何用代碼表示A,B,C,D這四個(gè)人說(shuō)的話(huà)?我們定義一個(gè)char變量killer來(lái)表示兇手。最能想到的就是如果某個(gè)人說(shuō)的話(huà)是成立的話(huà),將他的結(jié)果為1(類(lèi)似于bool類(lèi)型),否則就是0。這樣的想法是正確的。A說(shuō),不是A,那么,可以表示為killer != ‘A’。判斷成立的話(huà),他就會(huì)返回1,否則,返回0。類(lèi)似的,其他3個(gè)人說(shuō)的話(huà)也可以這樣來(lái)表示。最后,根據(jù)3個(gè)人說(shuō)了真話(huà),1個(gè)人說(shuō)了假話(huà)得知返回的總和為3。比如,我們假設(shè)A就是兇手,那么根據(jù)四個(gè)人說(shuō)的話(huà),A說(shuō)了假話(huà),B也說(shuō)了假話(huà),和條件是不符合的。這樣之后,只是判斷了A的情況,B,C,D的情況還沒(méi)有判斷,只需要加一個(gè)循環(huán)就可以了。

        C語(yǔ)言代碼如下:

#include<stdio.h>
 
int main(void)
{
	char killer = 'A';
	for (killer = 'A'; killer <= 'D'; killer++)
	{
		if ((killer != 'A') + (killer == 'C') + (killer == 'D') + (killer != 'D') == 3)
		{
			printf("the killer is %c", killer);
		}
	}
 
	return 0;
}

        結(jié)果如下:

現(xiàn)在,我們來(lái)看和它相似的第二道題目:

描述:

        兩個(gè)乒乓球隊(duì)進(jìn)行比賽,甲隊(duì)為ABC三人;乙隊(duì)為XYZ三人;抽簽決定比賽名單,有人向隊(duì)員打聽(tīng)比賽的名單,A說(shuō)他不和X比,C說(shuō)他不和Z比。請(qǐng)編程輸出所有可能的對(duì)陣方案,并統(tǒng)計(jì)方案的個(gè)數(shù)。

思路及分析:

        這道題和猜兇手那道題目的方法是一致的,都是直接把題目的文字描述轉(zhuǎn)換為代碼描述。直接使用 for循環(huán)即可。代碼如下:

#include<stdio.h>
 
int main(void) 
{
	char A = 0;
	char B = 0;
	char C = 0;
		for (A = 'X'; A <= 'Z'; A++)
		{
			for (B = 'X'; B <= 'Z'; B++)
			{
				for (C = 'X'; C <= 'Z'; C++)
				{
					if ((A != 'X') + (C != 'Z')  == 2)
					{
						if (A != B && B != C && C != A)
						{
							printf("A VS %c, B VS %c, C VS %c\n", A, B, C);
						}
						
					}
				}
			}
		}
	return 0;
}

        結(jié)果如下:

第三道題目:

描述:

5位運(yùn)動(dòng)員參加了10米臺(tái)跳水比賽,有人讓他們預(yù)測(cè)比賽結(jié)果:

A選手說(shuō):B第二,我第三;

B選手說(shuō):我第二,E第四;

C選手說(shuō):我第一,D第二;

D選手說(shuō):C最后,我第三;

E選手說(shuō):我第四,A第一;

比賽結(jié)束后,每位選手都說(shuō)對(duì)了一半,請(qǐng)編程確定比賽的名次。

思路及分析:

        暴力破解法即可。代碼如下:

#include<stdio.h>
 
int main(void)
{
	int a = 0, b = 0, c = 0, d = 0, e = 0;
 
	for (a = 1; a <= 5; a++)
	{
		for (b = 1; b <= 5; b++)
		{
			for (c = 1; c <= 5; c++)
			{
				for (d = 1; d <= 5; d++)
				{
					for (e = 1; e <= 5; e++)
					{
						if (((b == 2) + (a == 3) == 1) && //B第二,我第三
							((b == 2) + (e == 4) == 1) && //我第二,E第四
							((c == 1) + (d == 2) == 1) && //我第一,D第二
							((c == 5) + (d == 3) == 1) && //C最后,我第三
							((e == 4) + (a == 1) == 1))   //我第四,A第一
						{
							if (a * b * c * d * e == 120)
							{
								printf("%d %d %d %d %d\n", a, b, c, d, e);
							}	
						}
					}
				}
			}
		}
	}
	return 0;
}

總結(jié):

最后一道題目來(lái)看,出現(xiàn)了驚人的五個(gè)for循環(huán)。同時(shí),每一個(gè)for循環(huán)都是循環(huán)5次,時(shí)間復(fù)雜度達(dá)到了O(n * n)。也就是說(shuō),一旦要判斷的人數(shù)增多,計(jì)算機(jī)的計(jì)算速度將會(huì)以肉眼可見(jiàn)的速度慢下去。類(lèi)似的題目采用暴力破解的方法雖然不是最優(yōu)解,但卻是最直觀簡(jiǎn)單,好理解的方法。 

到此這篇關(guān)于C語(yǔ)言猜兇手及類(lèi)似題目的實(shí)現(xiàn)示例的文章就介紹到這了,更多相關(guān)C語(yǔ)言猜兇手內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C++ STL vector的模擬實(shí)現(xiàn)

    C++ STL vector的模擬實(shí)現(xiàn)

    這篇文章主要介紹了C++ STL vector的模擬實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-05-05
  • C++全面精通類(lèi)與對(duì)象

    C++全面精通類(lèi)與對(duì)象

    類(lèi)和對(duì)象是兩種以計(jì)算機(jī)為載體的計(jì)算機(jī)語(yǔ)言的合稱(chēng)。對(duì)象是對(duì)客觀事物的抽象,類(lèi)是對(duì)對(duì)象的抽象。類(lèi)是一種抽象的數(shù)據(jù)類(lèi)型;變量就是可以變化的量,存儲(chǔ)在內(nèi)存中—個(gè)可以擁有在某個(gè)范圍內(nèi)的可變存儲(chǔ)區(qū)域
    2022-05-05
  • C++利用VLC庫(kù)制作音視頻的示例代碼

    C++利用VLC庫(kù)制作音視頻的示例代碼

    這篇文章主要為大家詳細(xì)介紹了C++如何利用VLC庫(kù)制作音視頻,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,感興趣的小伙伴可以了解一下
    2024-01-01
  • 使用Qt/C++實(shí)現(xiàn)WGS84,高德GCJ-02與百度BD-09坐標(biāo)系間相互轉(zhuǎn)化

    使用Qt/C++實(shí)現(xiàn)WGS84,高德GCJ-02與百度BD-09坐標(biāo)系間相互轉(zhuǎn)化

    這篇文章主要為大家詳細(xì)介紹了如何使用Qt實(shí)現(xiàn)WGS84、高德GCJ-02與百度BD-09坐標(biāo)系間相互轉(zhuǎn)化,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-07-07
  • Qt實(shí)現(xiàn)UDP多線程數(shù)據(jù)處理及發(fā)送的簡(jiǎn)單實(shí)例

    Qt實(shí)現(xiàn)UDP多線程數(shù)據(jù)處理及發(fā)送的簡(jiǎn)單實(shí)例

    本文主要介紹了Qt實(shí)現(xiàn)UDP多線程數(shù)據(jù)處理及發(fā)送的簡(jiǎn)單實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • 利用C語(yǔ)言的Cairo圖形庫(kù)繪制太極圖實(shí)例教程

    利用C語(yǔ)言的Cairo圖形庫(kù)繪制太極圖實(shí)例教程

    這幾天都在研究Cairo圖形庫(kù),這是一個(gè)開(kāi)源跨平臺(tái)的圖形庫(kù),相對(duì)于OpenGL來(lái)說(shuō)更容易上手使用。這篇文章是利用C語(yǔ)言的Cairo圖形庫(kù)繪制了一個(gè)太極圖,對(duì)大家學(xué)習(xí)Cairo圖形庫(kù)具有一定的參考借鑒價(jià)值,下面來(lái)一起看看吧。
    2016-12-12
  • C語(yǔ)言合并兩個(gè)帶頭節(jié)點(diǎn)升序排列鏈表

    C語(yǔ)言合并兩個(gè)帶頭節(jié)點(diǎn)升序排列鏈表

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言合并兩個(gè)帶頭節(jié)點(diǎn)升序排列鏈表的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-03-03
  • opencv實(shí)現(xiàn)機(jī)器視覺(jué)檢測(cè)和計(jì)數(shù)的方法

    opencv實(shí)現(xiàn)機(jī)器視覺(jué)檢測(cè)和計(jì)數(shù)的方法

    在機(jī)器視覺(jué)中,有時(shí)需要對(duì)產(chǎn)品進(jìn)行檢測(cè)和計(jì)數(shù)。其難點(diǎn)無(wú)非是對(duì)于產(chǎn)品的圖像分割。本文就來(lái)介紹一下機(jī)器視覺(jué)檢測(cè)和計(jì)數(shù)的實(shí)現(xiàn),感興趣的可以參考一下
    2021-05-05
  • C/C++中數(shù)據(jù)類(lèi)型轉(zhuǎn)換詳解及其作用介紹

    C/C++中數(shù)據(jù)類(lèi)型轉(zhuǎn)換詳解及其作用介紹

    這篇文章主要介紹了C/C++中數(shù)據(jù)類(lèi)型轉(zhuǎn)換詳解及其作用,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-09-09
  • C++之值傳遞&指針傳遞&引用傳遞的示例詳解

    C++之值傳遞&指針傳遞&引用傳遞的示例詳解

    這篇文章主要為大家詳細(xì)介紹了C++中值傳遞、指針傳遞和引用傳遞的定義與使用,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)C++有一定幫助,需要的可以參考一下
    2022-10-10

最新評(píng)論