




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
塔里木大學(xué)信息工程學(xué)院課程論文第3頁共6頁一.案例提出 2二.模擬設(shè)計(jì) 2三.編程實(shí)現(xiàn) 3四.結(jié)果分析 5六.心得體會(huì) 5七.參考文獻(xiàn) 6正文一.案例提出法國(guó)數(shù)學(xué)家泊松曾提出以下分酒趣題:某人有一瓶12品脫(容量單位)的酒,同時(shí)有容積為5品脫的空杯各一個(gè)。借助這兩個(gè)空杯,如何將這瓶12品脫的酒平分?我們要解決一般的平分酒案例:借助容量分別為bv與cv的兩個(gè)空杯,用最少的分倒次數(shù)把總?cè)萘繛榕紨?shù)a的酒平分。這里正整數(shù)bv,cv與偶數(shù)a均從鍵盤輸入。二.模擬設(shè)計(jì)求解一般的“泊松分酒”問題:借助容積分別為整數(shù)bv,cv的兩個(gè)空杯,用最少的分倒次數(shù)把總?cè)萘繛榕紨?shù)a的酒(并未要求滿瓶)平分,采用直接模擬平分過程的分倒操作。為了把鍵盤輸入的偶數(shù)a通過分倒操作平分為兩個(gè)i:i=a/2(i為全局變量),設(shè)在分倒過程中:瓶A中的酒量為a,(0<=a<=2*i);杯B(容積為bv)中的酒量為b,(0<=b<=bv);杯C(容積為cv)中的酒量為c,(0<=c<=cv);我們模擬下面兩個(gè)方向的分倒操作:按A->B->C順序分倒操作當(dāng)B杯空(b=0)時(shí),從A瓶倒?jié)MB杯。從B杯分一次或多次倒?jié)MC杯。若b>cv-c,倒?jié)MC杯,操作3>若b<=cv-c,倒空B杯,操作1>當(dāng)C杯滿(c=cv)時(shí),從C杯倒回A瓶。分倒操作中,用變量n統(tǒng)計(jì)分倒次數(shù),每分倒一次,n增1.若b=0且a<bv時(shí),步驟1>無法實(shí)現(xiàn)(即A瓶的酒不滿B杯)而中斷,記n=-1為中斷標(biāo)志。分倒操作中若有a=i或b=i或c=i時(shí),顯然已達(dá)到平分目的,分倒循還結(jié)束,用實(shí)驗(yàn)函數(shù)Probe(a,bv,cv)返回分倒次數(shù)n的值。否則,繼續(xù)循環(huán)操作。模擬操作描述: while(!(a==i||b==i||c==i)) { if(!b){a-=bv;b=bv;} elseif(c==cv){a+=cv;c=0;} elseif(b>cv-c){b-=(cv-c);c=cv;} else{c+=b;b=0;} printf("%6d%6d%6d\n",a,b,c); }(2)按A->C->B順序分倒操作這一循環(huán)操作與(1)實(shí)質(zhì)上是C與B杯互換,相當(dāng)于返回函數(shù)值Probe(a,cv,bv)。試驗(yàn)函數(shù)Probe()的引入是巧妙的,可綜合模擬以上兩種分倒操作避免了關(guān)于cv與bv大小關(guān)系的討論。同時(shí)設(shè)計(jì)實(shí)施函數(shù)Practice(a,bv,cv),與試驗(yàn)函數(shù)相比較,把n增1操作改變?yōu)檩敵鲋虚g過程量a,b,c,以標(biāo)明具體操作進(jìn)程。在主函數(shù)main()中,分別輸入a,bv,cv的值后,為尋求較少的分倒次數(shù),調(diào)用試驗(yàn)函數(shù)并比較m1=Probe(a,bv,cv)與(m2=Probe(a,cv,bv)。若m1<0且m2<0,表明無法平分(均為中斷標(biāo)志)。若m2<0,只能按上述(1)操作;若0<m1<m2,按上述(1)操作分倒次數(shù)較少(即m1)。此時(shí)調(diào)用實(shí)施函數(shù)Practice(a,bv,cv)。若m1<0,只能按上述(2)操作;若0<m2<m1,按上述(2)操作分倒次數(shù)較少(即m2)。此時(shí)調(diào)用實(shí)施函數(shù)Practice(a,cv,bv)。實(shí)施函數(shù)打印整個(gè)模擬分倒操作進(jìn)程中的a,b,c的值。最后打印出最少的分倒次數(shù)。三.編程實(shí)現(xiàn)#include<stdio.h>voidpractice(int,int,int);inti,n,probo(int,int,int);voidmain(){ inta,bv,cv,m1,m2; printf("\n請(qǐng)輸入酒總量(偶數(shù)):"); scanf("%d",&a); printf("兩空杯容量bv,cv分別為:"); scanf("%d,%d",&bv,&cv); i=a/2; if(bv+cv<i) { printf("空杯容量太小,無法平分!\n"); return; } m1=probo(a,bv,cv); m2=probo(a,cv,bv); if(m1<0&&m2<0) {printf("無法平分!\n"); return; } if(m1>0&&(m2<0||m1<=m2)) {n=m1;practice(a,bv,cv);} else {n=m2;practice(a,cv,bv);}}voidpractice(inta,intbv,intcv){ intb=0,c=0; printf("平分酒的分法:\n"); printf("酒瓶%d空杯%d空杯%d\n",a,bv,cv); printf("%6d%6d%6d\n",a,b,c); while(!(a==i||b==i||c==i)) { if(!b){a-=bv;b=bv;} elseif(c==cv){a+=cv;c=0;} elseif(b>cv-c){b-=(cv-c);c=cv;} else{c+=b;b=0;} printf("%6d%6d%6d\n",a,b,c); } printf("平分酒共分到%d次。\n",n);}intprobo(inta,intbv,intcv){ intn=0,b=0,c=0; while(!(a==i||b==i||c==i)) {if(!b) if(a<bv){n=-1;break;} else{a-=bv;b=bv;} elseif(c==cv){a+=cv;c=0;} elseif(b>cv-c){b-=(cv-c);c=cv;} else{c+=b;b=0;} n++; } return(n);}四.結(jié)果分析當(dāng)輸入酒總量:12,兩空杯容量為5,8時(shí),程序運(yùn)行結(jié)果如上圖所示。五.程序改進(jìn)以上程序中,對(duì)m1和m2的全路徑判斷雖然可以獲得分倒次數(shù)較少的方法,但這是建立在程序有解的前提之下,而程序有沒有解并不能通過對(duì)m1,m2的全路徑判斷已完全確定。例如,當(dāng)輸入a=10,nv=4,cv=6時(shí),顯然沒有解,這時(shí)程序進(jìn)入死循環(huán)。那輸入的數(shù)據(jù)在滿足什么條件下才有解呢?令d=gcd(bv,cv)表示bv與cv的最大公約數(shù),且滿足基本條件:bv+cv>=(a/2)時(shí),可以證明,當(dāng)mod(a/2,d)=0時(shí),所輸入的數(shù)據(jù)一定有解。特別當(dāng)bv與cv互質(zhì)時(shí),a為任何偶數(shù)都有解。六.心得體會(huì)泊松分酒是個(gè)很有趣的案例,而計(jì)算機(jī)可以無限推演,因此,可以設(shè)計(jì)一個(gè)算法將泊松分酒實(shí)現(xiàn)。而將泊松分
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030年中國(guó)聚酰亞胺(PI)薄膜行業(yè)運(yùn)行現(xiàn)狀及發(fā)展前景分析報(bào)告
- 2025福建省建筑安全員C證考試題庫
- 南京師范大學(xué)《統(tǒng)計(jì)學(xué)專業(yè)前沿》2023-2024學(xué)年第二學(xué)期期末試卷
- 四川農(nóng)業(yè)大學(xué)《醫(yī)學(xué)論文寫作與學(xué)術(shù)誠(chéng)信》2023-2024學(xué)年第二學(xué)期期末試卷
- 廣西體育高等??茖W(xué)?!兜厍蛭锢韺W(xué)》2023-2024學(xué)年第二學(xué)期期末試卷
- 甘肅畜牧工程職業(yè)技術(shù)學(xué)院《研究型綜合》2023-2024學(xué)年第二學(xué)期期末試卷
- 哈爾濱工程大學(xué)《學(xué)前教育專業(yè)英語》2023-2024學(xué)年第二學(xué)期期末試卷
- 2024-2025學(xué)年山東省百師聯(lián)考高三上學(xué)期11月考試歷史試卷
- 上海民遠(yuǎn)職業(yè)技術(shù)學(xué)院《服裝市場(chǎng)調(diào)研》2023-2024學(xué)年第二學(xué)期期末試卷
- 山西信息職業(yè)技術(shù)學(xué)院《秘書學(xué)》2023-2024學(xué)年第二學(xué)期期末試卷
- 術(shù)后鎮(zhèn)痛泵的使用與護(hù)理
- GB 19522-2024車輛駕駛?cè)藛T血液、呼氣酒精含量閾值與檢驗(yàn)
- 2024年成都新都投資集團(tuán)有限公司招聘筆試沖刺題(帶答案解析)
- 危險(xiǎn)預(yù)知訓(xùn)練表(KYT)
- 2024年湖南鐵路科技職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)技能測(cè)試題庫及答案解析
- 《書籍裝幀設(shè)計(jì)》 課件 項(xiàng)目1 走進(jìn)書籍裝幀設(shè)計(jì)
- ASTM標(biāo)準(zhǔn)全部目錄(中文版)
- 《汽車電氣設(shè)備構(gòu)造與維修》 第4版 課件 第3、4章 電源系統(tǒng)、發(fā)動(dòng)機(jī)電器
- 遼海版小學(xué)美術(shù)六年級(jí)下冊(cè)全冊(cè)教案
- 2023年南京市鼓樓區(qū)建寧路街道安監(jiān)辦招聘專職安全員考試真題及答案
- 鄉(xiāng)鎮(zhèn)精神衛(wèi)生工作總結(jié)
評(píng)論
0/150
提交評(píng)論