讨论 / 112邮票面值设计 DP哪里错了?
·August· 2011-10-23 08:58:00
点我顶贴 收藏 删除
int n,k;//k种共n张

int a[21];//记录面值

int b[2010];//记录每种邮资是否能,需几张

int aa[21];//最优方案

int Max;//最大面值

void dp()

{

memset(b,0,sizeof(b));

int i,j;

for(i=1;i<=k;i++) b[a[i]]=1;

for(i=1;i<=k;i++)

for(j=1;j<=1000;j++)

{

if(j>a[i])

if(b[j-a[i]]!=0 && b[j-a[i]]<n)//有该面值为k的方案

if((b[j]!=0 && b[j]>b[j-a[i]]+1)||(b[j]==0))//且优于原方案或无原方案

{ b[j]=b[j-a[i]]+1;}

}

for(i=1;i<1000;i++)

if(b[i]==0)

{

if(Max<i)

{

Max=i-1;

for(j=1;j<=k;j++)

aa[j]=a[j];

}

break;

}

}

查看更多回复
提交回复