韩信走马分油(C语言)
任務(wù)描述
泊松是法國(guó)數(shù)學(xué)家、物理學(xué)家和力學(xué)家。他一生致力科學(xué)事業(yè),成果頗多。有許多著名的公式定理以他的名字命名,比如概率論中著名的泊松分布。 有一次閑暇時(shí),他提出過(guò)一個(gè)有趣的問(wèn)題,后稱為:“泊松分酒”。在我國(guó)古代也提出過(guò)類(lèi)似問(wèn)題,遺憾的是沒(méi)有進(jìn)行徹底探索,其中流傳較多是:“韓信走馬分油”問(wèn)題。有3個(gè)容器,容量分別為12升,8升,5升。其中12升中裝滿油,另外兩個(gè)空著。要求你只用3個(gè)容器操作,最后使得某個(gè)容器中正好有6升油。下面的列表是可能的操作狀態(tài)記錄:
12,0,0
4,8,0
4,3,5
9,3,0
9,0,3
1,8,3
1,6,5
每行3個(gè)數(shù)據(jù),分別表示12,8,6升容器中的油量,第一行表示初始狀態(tài),第二行表示把12升倒入8升容器后的狀態(tài),第三行是8升倒入5升,... 當(dāng)然,同一個(gè)題目可能有多種不同的正確操作步驟。
編程要求
根據(jù)提示,在右側(cè)編輯器編寫(xiě)代碼。
本題目的要求是,由用戶輸入:各個(gè)容器的容量,開(kāi)始的狀態(tài),和要求的目標(biāo)油量,程序則通過(guò)計(jì)算輸出是否可能分成功-“Y”,“N”。
例如,用戶輸入:
12,8,5,12,0,0,6
用戶輸入的前三個(gè)數(shù)是容器容量(由大到小),接下來(lái)三個(gè)數(shù)是三個(gè)容器開(kāi)始時(shí)的油量配置,最后一個(gè)數(shù)是要求得到的油量(放在哪個(gè)容器里得到都可以), 則程序可以輸出“Y”
測(cè)試說(shuō)明
平臺(tái)會(huì)對(duì)你編寫(xiě)的代碼進(jìn)行測(cè)試:
測(cè)試輸入:12 8 5 12 0 0 6
預(yù)期輸出:Y
解析:
首先定義一套規(guī)則
題目中的瓶子總共有三種,最大的A,中等的B,最小的C,我們規(guī)定:
最大的瓶子只能往中等的瓶子倒;(若中等的瓶子為空)
中等的瓶子只能往最小的瓶子倒;(若最小的瓶子不滿)
最小的瓶子只能往最大的瓶子倒;(若最小的瓶子已滿)
流動(dòng)時(shí)單項(xiàng)的也是唯一的,如果出現(xiàn)了開(kāi)始的狀態(tài)則說(shuō)明容易不可能成功。
#include <stdio.h> int main(){int A, B, C, a, b, c, t;scanf("%d", &A);scanf("%d", &B);scanf("%d", &C);scanf("%d", &a);scanf("%d", &b);scanf("%d", &c);scanf("%d", &t);int aa = a, bb = b, cc = c;while(aa != t && bb != t && cc != t){ // 每一步都加了判斷, 因?yàn)槿绻麥y(cè)試集不夠嚴(yán)謹(jǐn),例如3 1 1 3 0 0 1 可能會(huì)得出N,因?yàn)榭梢詴?huì)內(nèi)部循環(huán),但其實(shí)第一步就已經(jīng)成功了。if(bb == 0){if(aa >= B){aa -= B;bb = B;}else{aa = 0;bb = aa;}}if(aa == t || bb == t || cc == t){printf("Y\n");break;}if(cc < C){int m = C - cc;if(bb >= m){cc = C;bb -= m;}else{cc += bb;bb = 0;}}if(aa == t || bb == t || cc == t){printf("Y\n");break;}if(cc == C){int m = A - aa;if(m >= cc){aa += cc;cc = 0;}else{aa += cc;cc -= m;}}if(aa == t || bb == t || cc == t){ // 找到了值printf("Y\n");break;}if(aa == a && bb == b && cc == c){ // 又回到了原狀態(tài) printf("N\n");break; }} return 0; }總結(jié)
以上是生活随笔為你收集整理的韩信走马分油(C语言)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: iphonexs和xr什么区别(苹果ip
- 下一篇: 使用git克隆GitHub仓库时报错解决