導航:首頁 > 源碼編譯 > 貪心演算法找錢

貪心演算法找錢

發布時間:2023-04-08 16:32:25

❶ 找零錢問題的貪心演算法

問題描述:
當前有面值分別為2角5分,1角,5分,1分的硬幣,請給出找n分錢的最佳方案(要求找出的硬幣數目最少)
問題分析:
根據常識,我們到店裡買東西找錢時,老闆總是先給我們最大面值的,要是不夠再找面值小一點的,直到找滿為止。如果老闆都給你找分數的或者幾角的,那你肯定不幹,另外,他也可能沒有那麼多零碎的錢給你找。其實這就是一個典型的貪心選擇問題。
問題的演算法設計與實現:
先舉個例子,假如老闆要找給我99分錢,他有上面的面值分別為25,10,5,1的硬幣數,為了找給我最少的硬幣數,那麼他是不是該這樣找呢,先看看該找多少個25分的, 99/25=3,好像是3個,要是4個的話,我們還得再給老闆一個1分的,我不幹,那麼老闆只能給我3個25分,由於還少給我24,所以還得給我2個10分的和4個1分。
具體實現
//找零錢演算法
//By falcon
//輸入:數組m,依次存放從大到小排列的面值數,n為需要找的錢數,單位全部為分
//輸出:數組num,對照數組m中的面值存放不同面值的硬幣的個數,即找錢方案

❷ 貪心演算法中,通常會讓證明貪心選擇性,請問,證明貪心選擇性的實質是什麼怎樣說明一個問題具有貪心選擇呢

一般都是要最省事的比如
設有n中不同面值的硬幣,個硬幣的面值春雨數組T[1:n]中,現在要用這些面值的硬幣來找錢。可以使用的各種面值的硬幣個數存於數組Coins[1:n]中。
對任意簽署0<=m<=20001,設計一個用最少硬幣找錢m的方法。

用貪心演算法,先用最大面值的,直到超出之前再改用更小面值的,超出之前再用更更小面值的。。直到正好。這樣最少
程序實例
#include<stdio.h>

void main()
{
int m;
int i;
printf("please input m:");
scanf("%d",&m);
int T[6] ={100,50,20,10,5,1};
int coins[6] = {0};
for(i = 0; i < 6; )
{
if(m < T[i])
{
i++;
continue;
}
while(m >= T[i])
{
m -= T[i];
coins[i]++;
}
i++;

}

for(i = 0; i < 6; i++)
if(coins==0)
printf("%-4d有 %-2d張\n",T[i],coins[i]);
printf("\n");
}

❸ 找零錢問題 [貪心演算法](java實現)

public getMin{

public int MinNumber=0;

public int findMax(int[] a){
for(int i=0;i<a.length;i++){
if(a[i]==0) return a[--i];
}
return a[a.length-1];
}

public boolean Compare(int a,int b){
public boolean flag=true;
if(a>b) flag=flase;
return flag;
}

public int getMinNumber(int[] M,int Money){
int[] findM=new int[M.length];

int index=0;

for(int i=0;i<M.length;i++){
boolean f = this.Compare(M[i],money)
if(f) findM[index++]=M[i];
}

int max = this.findMax(findM);
MinNumber++;

if((Money-max)!=0) {
getMinNumber(M,Money-max)
}

return MinNumber;
}

public int[] Start(){
System.out.println("請輸入查詢組數");
int group=System.in.read();

int[] M={1,2,5,10,20,50,100};

int[] Result = new Int[group];
int index=0;

while (group-- > 0){
System.out.println("請輸入金額");
int money=System.in.read();
Result[index++] = getMinNumber(M,money);
MinNumber=0;
}
}

public void print(int[] MinNumber){
for(int i=0;i<MinNumber.length.i++){
System.out.println(MinNumber[i]+" ");
}
}
}

public static void main(String[] args){
new getMin().print(new getMin().Start());
}

沒測試啊,有問題請勿噴,呵呵

閱讀全文

與貪心演算法找錢相關的資料

熱點內容
貨拉拉app在哪裡選收藏司機 瀏覽:541
如何從安卓轉移照片到ipad 瀏覽:494
馬士兵java全集 瀏覽:89
農行APP未付款訂單怎麼付 瀏覽:154
生成編譯 瀏覽:591
聯通河南伺服器dns地址 瀏覽:904
如何更改應用加密的畫面 瀏覽:815
河道斷面圖演算法 瀏覽:178
java文件夾監控 瀏覽:353
wapp管理系統源碼 瀏覽:275
我的世界伺服器進去如何從成員調成管理員 瀏覽:888
汽車壓縮機用什麼機油好 瀏覽:838
phpexcel文件上傳 瀏覽:252
如何靜音手機的某個app 瀏覽:889
半導體工藝pdf 瀏覽:782
命令和意願的一致才不會掉鏈 瀏覽:657
設計模式java裝飾模式 瀏覽:694
戀聽app哪裡下載 瀏覽:709
金鏟鏟之戰為什麼一直伺服器滿 瀏覽:74
安卓手機如何像蘋果一樣app資源庫 瀏覽:129