收集各类贪心算法(C语言编程)经典题目

Python023

收集各类贪心算法(C语言编程)经典题目,第1张

举个例子,假如你买东西,老板需要找给你99分钱,他有上面面值分别为25分,10分,5分,1分的硬币(都是假如,不符合实际),他得找你3个25分,2个10分的,4个1分的才为最佳方案!

用贪心算法编写程序实现!

main()

{

int

i,a[5],b[4],c[4]

/*

define

the

type

of

the

money*/

a[1]=25

a[2]=10

a[3]=5

a[4]=1

printf("please

input

you

money

(fen):\n")

scanf("%d",&b[0])

for

(i=1i<=4i++)

{

b[i]=b[i-1]%a[i]

/*take

n

25

off

and

money

left*/

c[i]=(b[i-1]-b[i])/a[i]

/*

n

*/

printf("%d

is

%d\n",a[i],c[i])

}

getch()

}

首先声明了3个linklist类型list,p,r.你可以把list想像为一个表,只不过开始是一个空表,list赋值给r,开始for循环,将R的下一个结点指定为P(头结点),然后再把 P指定给R,头结点的下一个结点为LIST,LIST赋值为P,从键盘输入A,如果A>0,则第2个结点的DATA部分为A的值,一直循环下去,结束的条件是输入值A>=0,当WHILE循环结束后P肯定到了最后一个结点,P赋值给R,R为末尾结点,然后用DO WHILE输出 ,输出每一个结点 的DATA,结束条件 是 P到了尾结点 。说白了就是先创建一个空表K-1个结点,然后键盘输入给每一个结点的DATA部分赋值>0,最后把输入的值输出。