动态规划
文章平均质量分 61
cjliux
这个作者很懒,什么都没留下…
展开
-
01背包、完全背包、多重背包、混合三种背包问题
P01: 01背包问题题目有N件物品和一个容量为V的背包。第i件物品的费用是c[i],价值是w[i]。求解将哪些物品装入背包可使价值总和最大。基本思路这是最基础的背包问题,特点是:每种物品仅有一件,可以选择放或不放。用子问题定义状态:即f[i][v]表示前i件物品恰放入一个容量为v的背包可以获得的最大价值。则其状态转移方程便是:f[i][v]=max{转载 2015-03-01 12:56:16 · 491 阅读 · 0 评论 -
背包问题思想的一个应用
背包问题的一个应用: 题目背景:从N个数中找出若干个数使它们的和为M,输出满足条件的数组,并统计数组的数目这是一个查找的问题. 用dfs的话,本人代码如下:#include<stdio.h>#include<string.h>#include<sys/time.h>#define NEXT {\ ++i; \ p[i] = 0;\ continue;}#defi原创 2015-02-28 23:35:09 · 1140 阅读 · 0 评论 -
poj1157做题心得
poj1157做题心得 首先这道题看起来有点像二分图匹配,刚开始时看起来很蛋疼,我个人不会做二分图匹配,虽然据说可以用KM算法解决.可是仔细一看,不是这么回事,因为花是按序号排列,不可以乱的.于是才发现,这其实就是一道动态规划题.由于个人水平十分有限,码了好几个小时终于把它弄出来了以下是AC代码:#include <stdio.h>#include <string.h>#define MX 10原创 2015-02-27 10:18:43 · 534 阅读 · 0 评论 -
Assembly-Line scheduling------code in c++
#include#include#includeusing namespace std;int num_of_st;void getdata(vector & v, int n){ if (!v.empty()) throw runtime_error("v empty"); int t; for (int i = 0; i < n; ++i) { cin >> t原创 2015-04-12 18:30:47 · 991 阅读 · 0 评论 -
Assembly-Line Schedule----code in c style
#define _CRT_SECURE_NO_WARNINGS#include#include#define MAX_OF_ST 100void traceRoute(bool from1, int l1[], int l2[],int n, int Route[]){ for (int i = n - 1; i >= 1; --i) { Route[i] = from1 ?原创 2015-04-12 19:32:48 · 527 阅读 · 0 评论 -
C++实现带路径记录的Floyd-Warshall算法
#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;const int INF = 100000000;void ch_status(vector > & W, vector > & P, int nNo原创 2015-06-06 21:41:02 · 1014 阅读 · 0 评论 -
C++实现floyd-warshall算法
#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;const int INF = 100000000;void ch_status(vector > & W, int nNodes) { //DP,原创 2015-06-06 21:22:14 · 1371 阅读 · 0 评论 -
算法分析之半数集自底向上
#include#includeusing namespace std;int main(void){ int n; vector hset; hset.push_back(1); while (cin >> n) { if (hset.size() >= n + 1) cout << hset[n] << endl; else { for (int i原创 2016-10-08 11:34:10 · 691 阅读 · 0 评论