經典演算法 關於硬幣稱重問題及程式設計實現

2021-09-19 16:00:28 字數 3243 閱讀 3867

好吧,我承認我是被室友坑了,突然在寢室討論起這個,從晚上9點多一直搞到了現在,才搞完+_+,不是徹底,但是搞定了大部分的問題

1,4硬幣稱重問題

2,8硬幣稱重問題

3,12硬幣稱重問題

傳送門:關於問題的解

12硬幣問題及解:

12個硬幣不知輕重如何用三次稱出來?

解法:(要看挺久才能明白)

傳送門:

解法傳送門

**實現:(都聚在一起了)

8枚硬幣的沒寫,因為跟4枚硬幣差不多,注意幾個程式我是隔開的

//硬幣稱重問題求解

//不知輕重型別,模擬第四塊為最不合格的那塊硬幣

// author:seen

// time:2015-09-20

//  比較精彩的地方在於判斷輕重

//4枚硬幣不知道輕重

#include

using

namespace

std;void main();    if(num[1]+num[2]>num[3]+num[4])        else

if(num[3]4])cout

<3];        else    }    else        else

if(num[1]2])cout

<1];        else    }}//12枚硬幣判重問題,有一枚偏重

#include

using

namespace

std;void main();    if(num[1]+num[2]+num[3]+num[4]+num[5]==num[6]+num[7]+num[8]+num[9]+num[10])        else

cout

<12];    }    else

if(num[1]+num[2]+num[3]+num[4]+num[5]6]+num[7]+num[8]+num[9]+num[10])        else

if(num[6]+num[7]==num[8]+num[9])        else    }    else        else

if(num[1]+num[2]3]+num[4])        else

cout

<5];    }}//12枚硬幣判重問題,有一枚不知道輕重

#include

using

namespace

std;void main();    if(num[1]+num[2]+num[3]+num[4]==num[5]+num[6]+num[7]+num[8])        else

if(num[1]+num[9]10]+num[11])        else    }    else

if(num[1]+num[2]+num[3]+num[4]5]+num[6]+num[7]+num[8])        else

if(num[1]+num[2]+num[5]3]+num[6]+num[9])        else    }    else        else

if(num[1]+num[2]+num[5]>num[3]+num[6]+num[9])        else    }}

好吧,我承認我是被室友坑了,突然在寢室討論起這個,從晚上9點多一直搞到了現在,才搞完+_+,不是徹底,但是搞定了大部分的問題

1,4硬幣稱重問題

2,8硬幣稱重問題

3,12硬幣稱重問題

傳送門:關於問題的解

12硬幣問題及解:

12個硬幣不知輕重如何用三次稱出來?

解法:(要看挺久才能明白)

傳送門:

解法傳送門

**實現:(都聚在一起了)

8枚硬幣的沒寫,因為跟4枚硬幣差不多,注意幾個程式我是隔開的

//硬幣稱重問題求解

//不知輕重型別,模擬第四塊為最不合格的那塊硬幣

// author:seen

// time:2015-09-20

//  比較精彩的地方在於判斷輕重

//4枚硬幣不知道輕重

#include

using

namespace

std;void main();    if(num[1]+num[2]>num[3]+num[4])        else

if(num[3]4])cout

<3];        else    }    else        else

if(num[1]2])cout

<1];        else    }}//12枚硬幣判重問題,有一枚偏重

#include

using

namespace

std;void main();    if(num[1]+num[2]+num[3]+num[4]+num[5]==num[6]+num[7]+num[8]+num[9]+num[10])        else

cout

<12];    }    else

if(num[1]+num[2]+num[3]+num[4]+num[5]6]+num[7]+num[8]+num[9]+num[10])        else

if(num[6]+num[7]==num[8]+num[9])        else    }    else        else

if(num[1]+num[2]3]+num[4])        else

cout

<5];    }}//12枚硬幣判重問題,有一枚不知道輕重

#include

using

namespace

std;void main();    if(num[1]+num[2]+num[3]+num[4]==num[5]+num[6]+num[7]+num[8])        else

if(num[1]+num[9]10]+num[11])        else    }    else

if(num[1]+num[2]+num[3]+num[4]5]+num[6]+num[7]+num[8])        else

if(num[1]+num[2]+num[5]3]+num[6]+num[9])        else    }    else        else

if(num[1]+num[2]+num[5]>num[3]+num[6]+num[9])        else    }}

硬幣問題 《演算法入門經典》

分析 典型的固定起始點的dag最長路最短路問題。起點為s,終點為0,只是注意一些細節。1 輸出答案。2 是否能走到0 include include include define maxn 100009 define inf 0x3f3f3f3f using namespace std int v ...

程式設計 貪心演算法解決硬幣問題

問題描述 有1元 5元 10元 50元 100元 500元的硬幣各c1,c5,c10,c50,c100,c500枚。現在要用這些硬幣來支付a元,最少需要多少枚硬幣?假設本題至少存在一種支付方案。限制條件 0 c1,c5,c10,c50,c100,c500 10的9次方 0 a 10的9次方 輸入 c...

貪心演算法經典問題 硬幣找零

這是乙個用最少硬幣支付指定額度的問題。一 問題描述 如下圖圖一,設有6種不同面值的硬幣,各硬幣的面值分別為5分 1角 2角 5角 1元 2元。現要用這些面值的硬幣來購物和找錢。購物時規定了可以使用的各種面值的硬幣個數。假定商店裡各面值的硬幣足夠多,顧客也可用多種方式支付,在一次購物中希望使用最少硬幣...