结构体

#include<stdio.h> struct WORK { int begin; int end; int value; }; int main() { int i; WORK worke[5]; for(i=0; i<5; i++) scanf("%d%d%d",&amp;worke[i].begin,&amp;worke[i].end,&amp;worke[i].value); for(i=0; i<5; i++) printf("%d,%d,%d\n",worke[i].begin,worke[...
学习档案 | 2013-06-25 16:01 | 阅读 1122 次 | 评论 0 条

动态规划练习3

引题 http://bbs.bccn.net/viewthread.php?tid=414177&amp;extra=&amp;page=1 加工工件获取最大价值的问题,为了便于理解学习核心的部分,把题目分解: 开始时间,结束时间,加工工件价值,分别用三个数组表示。 以结束时间排序好。 动态转移方程直接在递归式中表现。 f(i,j)表示至第i个工件时结束时间为j时 累加最大价值。 主要意思是,选取第i个工件时,和不取第i个工件时情况的价值中取较大值。 通俗的讲,当取第i个工件时,此时选取后的 j 值为第i个工件的开始时间,不选 i工件 时此时的j值为(i-1)工件的结束时间。 #in...
学习档案 | 2013-06-25 12:39 | 阅读 1464 次 | 评论 0 条

从若干数中任取若干数使之和最接近另一数

开始学习编程时曾经练习过此类题,采用的是蛮力法,虽说找的数较全,但因指数级数据处理相当复杂且相当有限,现用动态规划处理,暂时没考虑标记所取的数。 #include <stdio.h> #include <math.h> double v[100]; double total(int i,double j) { double l,r,t; if(i==-1||j==0) return 0; l=total(i-1,j);r=total(i-1,j-v[i])+v[i]; t=fabs(l-j)<fabs(r-j) ? l:r; return ...

01背包学习

01背包动态规划思维不同于常规思维,需要学习前人的研究成果,但只要认真,看下百度百科,掌握了方法及参数的内容,基本上就差不多了,动态转移方程的理解熟悉后其实就能直接理解。 通过实例学习, 序號(i) 單個物重量w(i) 單個物品價值v(i) 1 22 15 2 18 18 3 9 10 4 24 13 5 15 20 包能承最大重35 求total(5,35)...

湖南高考数列题

有数列a(n)满足:2a(n)-a(1)=s(n)s(1);其中n是正整数,s(n)为各项之和,a(1)不等于0; 1,求,a(1),a(2)的值; 并求,a(n)的通项; 2,求数列n*a(n)各项之和; 以下为递归实现。 #include<stdio.h> int s(int n); int sum(int n); int f(int n)//a( n)=s(n-1)+1 { if(n==1) return 1; return s(n-1)+1; } int s(int n)//s(n)=s(n-1)+a(n) { if(n...
学习档案 | 2013-06-11 21:24 | 阅读 2297 次 | 评论 2 条
浏览163615次
最新评论