当前位置: 代码迷 >> C语言 >> 题目我变了 更有意思 在我原来的基础上加了一个问题 题目在31楼
  详细解决方案

题目我变了 更有意思 在我原来的基础上加了一个问题 题目在31楼

热度:137   发布时间:2007-10-31 11:16:32.0

不是啊,我的结果是真确的啊


----------------解决方案--------------------------------------------------------
你先改成循环输入
切先输入
4 18
10 9 4 3

4 13
2 4 6 8

----------------解决方案--------------------------------------------------------
我改了 超时
----------------解决方案--------------------------------------------------------
你的是动态规划吧
----------------解决方案--------------------------------------------------------

是的,题是在什么地方的,给我说下,我去看下~~~


----------------解决方案--------------------------------------------------------
http://210.31.185.229/JudgeOnline/showproblem?problem_id=1238
----------------解决方案--------------------------------------------------------

哦拉哦拉


----------------解决方案--------------------------------------------------------

什么 哦拉哦拉???


----------------解决方案--------------------------------------------------------

谢谢各位这些天来对我的这题的关注
经过多天的奋斗 我终于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;
}


----------------解决方案--------------------------------------------------------

动态规划,我怎么都没想到,你太牛了


----------------解决方案--------------------------------------------------------
  相关解决方案