解题思路:
注意事项:
参考代码:
#include<stdio.h>
int n,vv;
int v[31],b[31];
int min=99999;
int book[31][20001];
void dfs(int k)
{
int i,j;
if(k<min)
min=k;
for(i=1;i<=n;i++)
{
if(b[i]==0)
if(v[i]<=k)
if(k-v[i]<book[i][k])
{
book[i][k]=k-v[i];
b[i]=1;
dfs(k-v[i]);
b[i]=0;
}
}
}
int main()
{
int i,j;
scanf("%d",&vv);
scanf("%d",&n);
for(i=1;i<31;i++)
for(j=1;j<20001;j++)
book[i][j]=99999;
for(i=1;i<=n;i++)
scanf("%d",&v[i]);
dfs(vv);
printf("%d\n",min);
return 0;
}
0.0分
1 人评分