神奇的背包-递归+动态规划-百练

简介: 神奇的背包-递归+动态规划-百练

 

输入

输入的第一行是正整数n (1 <= n <= 20),表示不同的物品的

数目。接下来的n行,每行有一个1到40之间的正整数,分别

给出a 1 ,a 2 ……a n 的值。

输出

输出不同的选择物品的方式的数目。

输入样例

3

20

20

20

 输出样例

3

62

枚举每个物品是选还是不选,共2 20 种情况

枚举的解法

#include<stdio.h>
int a[100];
int n;
int total[100]={0};
int f(int m,int k)
{
  if(m==0)
  {
  return 1;
  }
  if(k>=n)
  {
  return 0;
  }
  return  total[k]=f(m,k+1)+f(m-a[k],k+1);
}
int main()
{
scanf("%d",&n);
for(int i=0;i<n;i++)
{
  scanf("%d",&a[i]);
}
printf("%d",f(40,0));
for(int i=0;i<n;i++)
{
  printf("%d",total[i]);
}
return 0;
} 

相关文章
|
6月前
|
算法 搜索推荐 Java
解析01背包问题及其在动态规划中的应用
解析01背包问题及其在动态规划中的应用
|
7月前
|
算法 程序员
程序员必知:动态规划——背包问题1:01背包
程序员必知:动态规划——背包问题1:01背包
45 0
动态规划:分组背包问题
动态规划:分组背包问题
97 0
|
算法 JavaScript 前端开发
动态规划-01背包
前言 动态规划和递归是一对CP,递归通过将大问题分解成小问题以求得答案,而动态规划则是通过求解小问题来组成大问题的解。虽然其本质都是先求小问题的解,但是问题的推算不同:
|
算法 Java 决策智能
【算法模板】动态规划(基础背包篇)—附习题(一)
【算法模板】动态规划(基础背包篇)—附习题(一)
162 0
【算法模板】动态规划(基础背包篇)—附习题(一)
|
算法 Java
【算法模板】动态规划(基础背包篇)—附习题(三)
【算法模板】动态规划(基础背包篇)—附习题(三)
237 0