唯品会在线编程:爱情数字,动态规划
2016-04-16 11:36
232 查看
与0-1背包问题不同之处在于:同一个数字可以取多次。动态规划算法的关键是找出状态及状态转移关系,如下:
C++编码实现如下,如有问题,欢迎指出!
#include<iostream> #include<vector> using namespace std; int max(int a,int b){ return a>=b?a:b; } int maxvalue(int a[],int n,int v){ if(v==0||a==NULL||n==0) return 0; int i,j; vector<vector<int>> vec(n,vector<int>(v+1,0)); for(i=1;i<n;i++){ for(j=1;j<=v;j++){ vec[i][j]=max(vec[i-1][j],vec[i][j-1]); if(j>=a[i]){ int tmp=max(vec[i-1][j-a[i]]*10+i,vec[i][j-a[i]]*10+i); vec[i][j]=max(vec[i][j],tmp); } } } return vec[n-1][v]; } int main(){ int v,a[10]; int i,j; while(cin>>v){ for(i=1;i<10;i++) cin>>a[i]; int res=maxvalue(a,10,v); cout<<res<<endl; } return 0; }
相关文章推荐
- Java开发中的23种设计模式详解(转)
- Code Forces Bear and Forgotten Tree 3 639B
- Java多线程学习
- Train_TransE代码注释
- java之路径分隔符介绍
- Java线程创建和启动
- java.net.UnknownHostException
- [转载]java正则表达式
- C++英文面试常见问题
- C++ 标准库 —— random
- PHP函数
- 用C++封装一个String
- phpmyadmin
- C#匿名方法和Lambda表达式
- SDM(Supervised Descent Method)用于人脸对齐的C++实现方法
- C++学习笔记之二 C++基础学习2
- java基础---静态变量、静态块、非静态块、构造函数及静态方法总结及一点儿想法
- PHP常量和运算符
- 在Yii2.0版本中中,如何从控制器里面传递变量到布局文件layouts里的模板中
- java一个方法形参有两个,如何在调用的时候只传入一个参数