平分液體問題的解決

2021-07-25 20:58:17 字數 975 閱讀 7946

最近遇到這樣乙個有趣的問題:有n(n為偶數)公升液體,現在要求用容量為3l 的量筒和容量為5l的量筒將液體等分成兩份,程式設計列印出所有平分液體的方法。(注:兩隻量筒均沒有刻度)

我說一下我的解決方法:首先我們要知道的是,題目中隱含了2l液體的這個條件,具體的2l液體是怎麼得出的,其實是這樣做的,把容量為5l的量筒灌滿,然後再用這個量筒中的液體把容量為3l的量筒灌滿,這時容量為5l的量筒就剩下2l液體。既然要平分n公升液體,我們容易知道其實要求的就是它的一半也就是n/2是由多少個2公升,多少個3公升,多少個5公升組成的。以n=8為例,也就是要平分8公升液體,我們知道它的一半為4公升,具體是由兩個2l組成的,也就是說,要做兩次"把容量為5l的量筒灌滿,然後再用這個量筒中的液體把容量為3l的量筒灌滿"的操作過程。大概思路就是這樣,下面是我寫的**用來解決這個問題的(以c語言來實現)。

#include

void fun(int num)

else if(!i&&j&&!k)

else if(!i&&!j&&k)

else if(i&&j&&!k)

else if(i&&!j&&k)

else if(!i&&j&&k)

else}}

}} if(!count)

printf("共有%d種解決方法\n",count);

}void main()

fun(num);

} 像這種問題的話,我認為最重要的同時也是最難的還是如何將實際問題轉化為數學問題,這是乙個難點,其實我是想了蠻久才想到這個方法的,解決這種問題心裡的那種感覺還是很難用言語來形容的,一旦解決了,心裡是很爽的。讀者可以多去考慮這種型別的問題,這對訓練自己的邏輯思維能力和用**解決實際問題的能力我覺得還是很有幫助的。

下圖是該程式的執行結果:

小 X 的液體混合

example mixture.in 3 21 2 2 3mixture.out 4scoring 對於 30 的資料,n 10。對於 100 的資料,1 n 1000,a b,同種反應不會出現多次。輸入的一張圖可能有多個不同的連通塊,而每個不同的連通塊之間互不影響,且每個 不同連通塊中加入的第一種...

初等模型 公平分配問題

問題 三個系學生共200名 甲系100,乙系60,丙系40 代表會議共20席,按比例分配,三個系分別為10,6,4席。現因學生轉系,三系人數為103,63,34,問20席如何分配。分析 如果僅僅使用比例去確定的話會出現一些不可預知的嚴重錯誤 是錯誤不是誤差!每涉及公平問題,就得考慮相對公平。要解決相...

題解 小X的液體混合

雖然小x不喜歡化學原理,但他特別喜歡把一大堆液體倒在一起。現在小x有n種液體,其中m對會發生反應。現在他想把這n種液體按某種順序倒入乙個容器內,讓他獲得最刺激的體驗,也就是使危險係數盡量大。我們可以這樣計算危險係數,一開始容器內沒有任何液體,危險係數為1。每次液體倒入容器時,若容器內已有一種或多種液...