最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C語言猜兇手及類似題目的實現(xiàn)示例

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

描述:

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

以下為4個嫌疑犯的供詞:

A說:不是我。        

B說:是C。

C說:是D。

D說:C在胡說

已知3個人說了真話,1個人說的是假話。

現(xiàn)在請根據(jù)這些信息,寫一個程序來確定到底誰是兇手。

思路及分析:

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

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

        C語言代碼如下:

#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)在,我們來看和它相似的第二道題目:

描述:

        兩個乒乓球隊進(jìn)行比賽,甲隊為ABC三人;乙隊為XYZ三人;抽簽決定比賽名單,有人向隊員打聽比賽的名單,A說他不和X比,C說他不和Z比。請編程輸出所有可能的對陣方案,并統(tǒng)計方案的個數(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)動員參加了10米臺跳水比賽,有人讓他們預(yù)測比賽結(jié)果:

A選手說:B第二,我第三;

B選手說:我第二,E第四;

C選手說:我第一,D第二;

D選手說:C最后,我第三;

E選手說:我第四,A第一;

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

思路及分析:

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

#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é):

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

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

您可能感興趣的文章:

相關(guān)文章

  • Windows消息傳遞機(jī)制詳解

    Windows消息傳遞機(jī)制詳解

    這篇文章主要介紹了Windows消息傳遞機(jī)制,有助于讀者更好的理解windows編程的消息機(jī)制,需要的朋友可以參考下
    2014-07-07
  • C語言編程中建立和解除內(nèi)存映射的方法

    C語言編程中建立和解除內(nèi)存映射的方法

    這篇文章主要介紹了C語言編程中建立和解除內(nèi)存映射的方法,分別為mmap()函數(shù)和munmap()函數(shù)的使用,需要的朋友可以參考下
    2015-08-08
  • C++實現(xiàn)考勤管理系統(tǒng)

    C++實現(xiàn)考勤管理系統(tǒng)

    這篇文章主要介紹了C++實現(xiàn)考勤管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • c語言printf實現(xiàn)同一位置打印輸出的實例

    c語言printf實現(xiàn)同一位置打印輸出的實例

    下面小編就為大家?guī)硪黄猚語言printf實現(xiàn)同一位置打印輸出的實例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-09-09
  • QT中如何讀寫ini配置文件

    QT中如何讀寫ini配置文件

    ini文件在windows系統(tǒng)中可以存儲需要持久保存的配置信息,QT界面中如何實現(xiàn)手動讀取參數(shù)存放的位置,感興趣的小伙伴們可以參考一下
    2021-11-11
  • C++實現(xiàn)LeetCode(60.序列排序)

    C++實現(xiàn)LeetCode(60.序列排序)

    這篇文章主要介紹了C++實現(xiàn)LeetCode(60.序列排序),本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • C語言指針引用數(shù)組案例講解

    C語言指針引用數(shù)組案例講解

    這篇文章主要介紹了C語言指針引用數(shù)組案例講解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-09-09
  • win10系統(tǒng)下?VS2019點(diǎn)云庫PCL1.12.0的安裝與配置教程

    win10系統(tǒng)下?VS2019點(diǎn)云庫PCL1.12.0的安裝與配置教程

    點(diǎn)云庫全稱是Point?Cloud?Library(PCL),是一個獨(dú)立的、大規(guī)模的、開放的2D/3D圖像和點(diǎn)云處理項目,這篇文章主要介紹了win10系統(tǒng)下?VS2019點(diǎn)云庫PCL1.12.0的安裝與配置,需要的朋友可以參考下
    2022-07-07
  • C++實現(xiàn)迷宮生成與解決

    C++實現(xiàn)迷宮生成與解決

    這篇文章主要為大家詳細(xì)介紹了C++實現(xiàn)迷宮生成與解決,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-12-12
  • C語言簡易掃雷游戲

    C語言簡易掃雷游戲

    這篇文章主要為大家詳細(xì)介紹了C語言簡易掃雷游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-10-10

最新評論

株洲县| 绩溪县| 秦安县| 白银市| 汕头市| 金坛市| 蓬安县| 大同县| 武隆县| 股票| 洞头县| 大连市| 泰州市| 元谋县| 嵊泗县| 海门市| 万年县| 厦门市| 苍山县| 莫力| 开远市| 什邡市| 江川县| 三明市| 克什克腾旗| 卢湾区| 大宁县| 青铜峡市| 仙游县| 房山区| 罗定市| 桂阳县| 富裕县| 云浮市| 二连浩特市| 高碑店市| 灵台县| 二连浩特市| 涟水县| 钦州市| 肇州县|