日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

韩信走马分油(C语言)

發(fā)布時(shí)間:2023/12/19 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 韩信走马分油(C语言) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

任務(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)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。