当我遇到这个算法(进行更改)并将其实现如下时,我正在网上冲浪......但仍然有任何有效的方法可以做到这一点......我如何从我实现的程序中找到相同的复杂性...
1>算法如下
makechange(c[],n) //c will contain the coins which we can take as our soln choice and 'n' is the amount we want change for
soln<-NULL//set that will hold solution
sum=0
while(sum!=n)
{
x<-largest item in c such that sum+x<=n
if(there is no such item)
return not found
soln <- soln U {a coin of value x}
sum=sum+x
return soln
}
2>here is what i have tried
#include<stdio.h>
#include<conio.h>
void main() {
int c[]= {100,50,20,10,5,1},soln[6];
int num,i,j,sum=0,x,k,flag=0;
clrscr();
printf("\nEnter amount to make change:");
scanf("%d",&num);
for(i=0;i<6;i++) {
soln[i]=NULL;
}
j=0;
while(sum!=num) {
for(i=0;i<6;i++) {
if(sum+c[i]<=num) {
x=c[i];
break;
}
}
sum=sum+x;
for(k=0;k<6;k++) {
if(soln[k]==x) {
flag=1;
}
}
if(flag!=1)
soln[j]=x;
j++;
}
printf("\nsoln contains coins below:");
j=0;
while(soln[j]!=NULL) {
printf("%d ",soln[j]);
j++;
}
getch();
}
任何帮助将不胜感激...谢谢...