资源分配问题
来源:互联网 发布:深圳软件测试培训 编辑:程序博客网 时间:2024/05/16 17:04
设有资源n(n为整数),分配给m个项目,gi(x)为第i个项目分得资源x(x为整数)所得的利润。求总利润最大的资源分配方案,也就是解下列问题:
max z = g1(x1)+g2(x2)+……+gm(xm)
x1+x2+……+xm = n, xi为整数,i=1,2,3,……,m
函数gi(x)以数据表的形式给出。
C++代码:
#include <iostream>#define N 100using namespace std;//a[.][.][0]存储原始数据//a[.][.][1]存储存储动态规划过程//a[.][.][2]存储最优化路径int main(){ //a[i][j]=k;表示前i个工程投资j所获得最大利润时给第i个工程分配的资源数 int a[N][N]; //gain记录第i个工程分配的资源数 int gain[N]; //f[i]表示当前投资总投资i时获得的最大利润 double f[N]; //pre_f[i]表示上一个项目投资总投资i时获得的最大利润 double pre_f[N]; //q[i]记录某个工程的利润表 double q[N]; cout<<"输入工程数:"; int m; cin>>m; cout<<"输入总资源数:"; int n; cin>>n; cout<<"输入第1个工程获得的利润表:"<<endl; for (int i=0;i<=n;++i) { cin >> q[i]; f[i] = q[i]; pre_f[i] = q[i]; a[1][i] = i; } cout<<endl; for (int k=2;k<=m;++k) { cout<<"输入第"<<k<<"个工程获得的利润表:"<<endl; for (int i=0;i<=n;++i) { cin >> q[i]; f[i] = 0; a[k][i] = 0; } for (int i=0;i<=n;++i) //i为总投资数 { cout<<"资源数为"<<i<<"时"<<endl; for (int j=0;j<=i;++j)//j为给第k个工程的投资数 { if (q[j] + pre_f[i-j] > f[i]) { a[k][i] = j; f[i] = q[j] + pre_f[i-j]; a[k][i] = j; } cout<<q[j] + pre_f[i-j]<<' '; } cout<<endl; } cout<<"当前最大利润表如下:"<<endl; for (int i=0;i<=n;++i) { pre_f[i] = f[i]; cout<<"f["<<i<<"]:"<<f[i]<<' '; } cout<<endl<<endl; } /*for (int i=1;i<=m;++i) { for (int j=1;j<=n;++j) { cout<<a[i][j]<<' '; } cout<<endl; } cout<<endl;*/ int rest = n; for (int i=m;i>=1;--i) { gain[i] = a[i][rest]; rest = rest-gain[i]; } for (int i=1;i<=m;++i) { cout<<"第"<<i<<"个项目投资"<<gain[i]<<endl; } cout<<"总利润:"<<f[n]<<endl; return 0;}// 3 7// 0 0.11 0.13 0.15 0.21 0.24 0.30 0.35// 0 0.12 0.16 0.21 0.23 0.25 0.24 0.34// 0 0.08 0.12 0.20 0.24 0.26 0.30 0.35// 0 0.11 0.13 0.15 0.21 0.24 0.30 0.35 0 0.12 0.16 0.21 0.23 0.25 0.24 0.34 0 0.08 0.12 0.20 0.24 0.26 0.30 0.35
运行结果:
0 0
- 资源分配问题
- 动态规划 资源分配问题
- 队列得不到资源分配问题
- 动态规划解资源分配问题
- 动态规划求解资源最优分配问题
- 资源分配问题(动态规划)
- 资源分配
- 深究跨dll的资源分配和释放问题
- 深究跨dll的资源分配和释放问题
- 算法设计与分析:第四章 4.4资源分配问题
- 动态规划(二):应用举例之资源分配问题
- LTE资源分配
- 资源分配动态规划
- D3D资源分配惯例
- 软件测试资源分配
- 合理分配 “锁”资源
- D3D资源分配惯例
- project资源过度分配
- Linux(Ubuntu)下各种配置(持续更新)
- linux设置定时任务
- java.lang.NoSuchMethodError: org.apache.hadoop.hbase.HTableDescriptor.addFamily(Lorg/apache/hadoop/h
- 前四位数并且带两位小数点验证如0000.00(1234.00)
- 工具类-虚拟键盘相关大全
- 资源分配问题
- 图片加载的学习体会吧
- xtrabackup的安装使用
- Python中的引用和拷贝浅析
- QT 设置窗体透明
- dll之路2:dll的作用介绍
- ScrollView中嵌套ListView时显示不全的问题解决办法
- 值班记录本
- 鸟哥私房菜linux基础学习笔记 6