解题思路:
注意事项:
参考代码:
#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 人评分
不知道哪里错了浏览:1145 |
C语言程序设计教程(第三版)课后习题6.4 (C语言代码)浏览:597 |
C语言训练-求函数值 (C语言代码)浏览:938 |
蓝桥杯历届试题-九宫重排 (C++代码)浏览:2783 |
C语言程序设计教程(第三版)课后习题5.4 (C语言代码)浏览:1311 |
C二级辅导-求偶数和 (C语言代码)浏览:674 |
C二级辅导-同因查找 (C语言代码)浏览:568 |
字符串的输入输出处理 (C语言代码)浏览:1009 |
复数求和 (C语言代码)浏览:927 |
C语言训练-大、小写问题 (C语言代码)浏览:682 |