算法大作业

发布 2020-02-25 08:33:28 阅读 1374

零钱问题。

02105111张旭。

02105113陈松懋。

1、问题描述。

现有1元,2元,5元,10元,50元的零钱若干张,需要找钱,用最少的张数实现。分别用贪心发,分治法,动态规划法实现。

2、**。#define infinity 32767无穷大。

#define max 100

#include <>

int greedy(int t,int i ,int j,int p)贪心法。

//从p[i]算出各种面额的钞票数。

int x=0;

for(int k=i;k>=1&&j>0;k--)

if(j==0)

return x;

elsereturn infinity;

int divide(int t,int i ,int j,int q[max]) 分治法。

//从q[i][j]算出各种面额的钞票数。

if(i==1)else

else

int dynamicmemory(int t,int i ,int j,int b[max]) 动态规划备忘录。

/b[i][j]==1 子问题未计算,递归计算

/b[i][j]!=1 子问题已计算,直接取计算结果。

/另外,也可从b[i][j]算出各种面额的钞票数。

if(i==1)else

void main()

int t=

int money;

int count=5;

printf("请输入找钱的金额:")

scanf("%d",&money);

int choice=-1;

while (choice!=0)

if(choice==1)

int x=greedy(t,count,money,p);

if(x==infinity)

printf("无解!");

elseelse if(choice==2)

int q[max][max]=;

int p[max]=;

int x=divide(t,count,money,q);

if(x==infinity)

printf("无解!");

elseelse if(choice==3)

for(int i=0;ifor(int j=0;jb[i][j]=-1;

int x=dynamicmemory(t,count,money,b

if(x==infinity)

printf("无解!");else

3、测试实例。

4、收获与感悟。

通过这次编程让我对一个问题的多种解法有了一定的感悟,深切理解了分治法,贪心法和动态规划三种算法。

算法大作业

算法导论大作业。名称 ontology based subgraph querying 出处 yinghui wu shengqi yang xifeng yan university of california santa barbara yinghui,sqyang,xyan 学校 哈尔滨工业大...

作业调度算法 先来先服务算法,短作业算法

操作系统 实验报告。题目 作业调度算法。班级 网络工程。姓名 朱锦涛。学号 e31314037 一 实验目的。用 实现页面调度算法,即先来先服务 fcfs 调度算法。短作业优先算法 高响应比优先调度算法。通过 的具体实现,加深对算法的核心的理解。二 实验原理。1.先来先服务 fcfs 调度算法。fc...

作业调度算法 先来先服务算法,短作业算法

操作系统 实验报告。题目 作业调度算法。班级 网络工程。姓名 朱锦涛。学号 e31314037 一 实验目的。用 实现页面调度算法,即先来先服务 fcfs 调度算法。短作业优先算法 高响应比优先调度算法。通过 的具体实现,加深对算法的核心的理解。二 实验原理。1.先来先服务 fcfs 调度算法。fc...