前世五百次的回眸 才换来今生的擦肩而过
谢谢各位这些天来对我的这题的关注
经过多天的奋斗 我终于ac了
再次感谢大家 谢了
Source
Problem Id:1238 User Id:200618053
Memory:276K Time:625MS
Language:G++ Result:Accepted
Source
#include <stdio.h>
#include <stdlib.h>
#define maxsize 10000
#define min(a,b) ((a)<=(b)?(a):(b))
int compar(const void *a,const void *b)
{
int *aa=(int *)a,*bb=(int *)b;
if(*aa>*bb) return 1;
if(*aa==*bb) return 0;
if(*aa<*bb) return -1;
}
int main()
{
int money[maxsize+1];
int base[10000];
char line[10000];
int k,n,mincase,i,j;
while(scanf("%d%d",&k,&n)!=EOF)
{
int num=0,sum=0,temp;
for(i=0;i<k;i++)
scanf("%d",&base[i]);
qsort(base,k,sizeof(base[0]),compar);
for(i=1;i<=n;i++)
money[i]=-1;
money[0]=0;
money[base[0]]=1;
for(i=base[0]+1;i<=n;i++)
{
mincase=n;
for(j=0;j<k;j++)
if(i>=base[j])
if(money[i-base[j]]>=0)
mincase=min(money[i-base[j]]+1,mincase);
if(mincase!=n)
money[i]=mincase;
}
if(money[n]>0)
printf("%d\n",money[n]);
else
printf("bad\n");
}
return 0;
}