资源分配算法的实现

//资源分配算法的实现

#include "stdio.h"

//#include "iostream.h"

//#define n 100

typedef int Type;

#define M 8 // 可分配的资源份额

#define N 3 // 工程项目个数

//int m;

//int n;

Type allot_res(int n, int m, Type G[N ][M+1], int optq[ ]);

Type G[N][M+1]={{0,4,26,40,45,50,51,52,53},{0,5,15,40,60,70,73,74,75},{0,6,15,40,80,90,95,98,100}}; // 工程的利润表

Type optg; // 最优的总利润

int optq[N]; // 工程最优分配份额

Type f[N][M+1]; // 各阶段不同资源份额的最大利润

int d[N][M+1]; // f[i][x] 最大时,第i项工程的分配份额

Type g[N]; // 阶段的最大利润

int q[N]; // 第 i 阶段第 i 工程最优分配份额

int optx; // 最优分配时的资源最优分配份额

int k; // 最优分配时的工程项目数

void main()

{

optx = allot_res(N,M,G,optq);

printf("%d \n",optx);

getchar();

}

Type allot_res(int n, int m, Type G[N ][M+1], int optq[ ])

{

int optx, k, i, j, x;

int *q = new int[ N ]; // 分配工作单元

int (*d)[M+1] = new int[ N ][ M+1 ];

Type (*f)[M+1] = new Type[ N ][ M+1 ];

Type *g = new Type[ N ];

for (j=0; j

{ // 第一个工程的份额利润表

f[ 0 ][ j ] = G[ 0 ][ j ]; d[ 0 ][ j ] = j;

}

for (i=1; i

{

f[ i ][ 0 ] = G[ i ][ 0 ] + f[ i-1 ][ 0 ];

d[ i ][ 0 ] = 0;

for (j=1; j

{

f[ i ][ j ] = f[ i ][ 0 ]; d[ i ][ j ] = 0;

for (x=0; x

{

if (f[ i ][ j ]

{

f[ i ][ j ] = G[ i ][ x ] + f[ i-1][ j-x ];

d[ i ][ j ] = x;

}

}

}

}

for (i=0; i

{

g[ i ] = f[ i ][ 0 ]; q[ i ] = 0;

for (j=1; j

if (g[ i ]

{

g[ i ] = f[ i ][ j ]; q[ i ] = j;

}

}

optg = g[ 0 ]; optx = q[ 0 ]; k = 0;

for (i=1; i

{

if (optg

{

optg = g[ i ]; optx = q[ i ]; k = i;

}

}

if (k

{ // 最大编号之后的

for (i=k+1; i

optq[ i ] = 0;

for (i=k; i >= 0; i--)

{ // 最大编号之前的

optq[ i ] = d[ i ][ optx ]; //工程分配份额

optx = optx - optq[ i ];

}

delete q;

delete d;

delete f;

delete g;

return optg;

}

}

//资源分配算法的实现

#include "stdio.h"

//#include "iostream.h"

//#define n 100

typedef int Type;

#define M 8 // 可分配的资源份额

#define N 3 // 工程项目个数

//int m;

//int n;

Type allot_res(int n, int m, Type G[N ][M+1], int optq[ ]);

Type G[N][M+1]={{0,4,26,40,45,50,51,52,53},{0,5,15,40,60,70,73,74,75},{0,6,15,40,80,90,95,98,100}}; // 工程的利润表

Type optg; // 最优的总利润

int optq[N]; // 工程最优分配份额

Type f[N][M+1]; // 各阶段不同资源份额的最大利润

int d[N][M+1]; // f[i][x] 最大时,第i项工程的分配份额

Type g[N]; // 阶段的最大利润

int q[N]; // 第 i 阶段第 i 工程最优分配份额

int optx; // 最优分配时的资源最优分配份额

int k; // 最优分配时的工程项目数

void main()

{

optx = allot_res(N,M,G,optq);

printf("%d \n",optx);

getchar();

}

Type allot_res(int n, int m, Type G[N ][M+1], int optq[ ])

{

int optx, k, i, j, x;

int *q = new int[ N ]; // 分配工作单元

int (*d)[M+1] = new int[ N ][ M+1 ];

Type (*f)[M+1] = new Type[ N ][ M+1 ];

Type *g = new Type[ N ];

for (j=0; j

{ // 第一个工程的份额利润表

f[ 0 ][ j ] = G[ 0 ][ j ]; d[ 0 ][ j ] = j;

}

for (i=1; i

{

f[ i ][ 0 ] = G[ i ][ 0 ] + f[ i-1 ][ 0 ];

d[ i ][ 0 ] = 0;

for (j=1; j

{

f[ i ][ j ] = f[ i ][ 0 ]; d[ i ][ j ] = 0;

for (x=0; x

{

if (f[ i ][ j ]

{

f[ i ][ j ] = G[ i ][ x ] + f[ i-1][ j-x ];

d[ i ][ j ] = x;

}

}

}

}

for (i=0; i

{

g[ i ] = f[ i ][ 0 ]; q[ i ] = 0;

for (j=1; j

if (g[ i ]

{

g[ i ] = f[ i ][ j ]; q[ i ] = j;

}

}

optg = g[ 0 ]; optx = q[ 0 ]; k = 0;

for (i=1; i

{

if (optg

{

optg = g[ i ]; optx = q[ i ]; k = i;

}

}

if (k

{ // 最大编号之后的

for (i=k+1; i

optq[ i ] = 0;

for (i=k; i >= 0; i--)

{ // 最大编号之前的

optq[ i ] = d[ i ][ optx ]; //工程分配份额

optx = optx - optq[ i ];

}

delete q;

delete d;

delete f;

delete g;

return optg;

}

}


相关文章

  • 银行家算法实现资源分配
  • <操作系统>实验报告 实验二 银行家算法实现资源分配 一.实验目的: 在了解和掌握银行家算法的基础上,能熟练的处理课本例题中所给状态的安全性问题.能编制银行家算法通用程序,将调试结果显示在计算机屏幕上,再检测和笔算的一致性. 二 ...查看


  • 银行家算法课程设计报告(毕业论文格式)
  • 操作系统课程设计报告 题目:银行家算法的设计与实现 院 (系): 专 业: 班 级: 学 生:学 号: 指导教师: 摘 要 Dijkstra的银行家算法是最有代表性的避免死锁的算法,该算法由于能用于银行系统现金贷款的发放而得名.银行家算法是 ...查看


  • 文献综述--IP网络中单速率多播拥塞控制算法研究
  • 文献综述 毕业设计题目: IP 网络中单速率多播拥塞控制 IP 网络中单速率多播拥塞控制算法研究 一. 引言 今天,因特网应用,如网络视频会议.网络音频/视频广播.AOD /VOD .数据分发.多媒体远程教育.在线信息恢复.软件或代理缓存更 ...查看


  • 云计算环境中任务调度策略
  • Broad Angle for Technology技术广角 云计算环境中任务调度策略 王海涛1 张焕青1 肖世平2 张学平1 闫 力1 1 中国人民解放军理工大学 南京 2100072 西安通信学院指挥控制系统系 西安 710100 摘 ...查看


  • 异构网络融合
  • 通信网论文 论文题目:异构网络的融合问题 专业老师:蔡征宇 学生学号: 学生姓名:张红梅 070404120 异构网络的融合问题 通信技术近些年来得到了迅猛发展,层出不穷的无线通信系统为用户提供了异构的网络环境,包括无线个域网(如Bluet ...查看


  • 从国家预算的特质论我国[预算法]的修订目的和原则
  • 从国家预算的特质论我国<预算法>的修订目的和原则 | 网站首页 | 免费论文 | 英语角 | 文书写作 | 幼儿教育 | 海量教案 | 免费课件 | 免费试题 | 整册教案 | 计划总结 | 用户留言 | ◆免费课件 47173 ...查看


  • 基于贪婪算法的自动排课表系统的研究与实现
  • 第29卷第18期Vol.29 No.18 计算机工程与设计 ComputerEngineeringandDesign 2008年9月Sept.2008 基于贪婪算法的自动排课表系统的研究与实现 王帮海1,2,李振坤1 (1.广东工业大学计算 ...查看


  • 计算机操作系统内存分配实验报告
  • 一.实验目的 熟悉主存的分配与回收.理解在不同的存储管理方式下,如何实现主存空间的分配与回收.掌握动态分区分配方式中的数据结构和分配算法及动态分区存储管理方式及其实现过程. 二.实验内容和要求 主存的分配和回收的实现是与主存储器的管理方式有 ...查看


  • 毕业设计题目-老师-公布doc-东南大学软件学院
  • 东南大学软件学院本科毕业设计题目 序号题目主要内容时间要求和人数人数其他要求指导教师1基于异步动态OTP的身份验证协议算法实现 一.学习部分: 1.分析目前同步OTP的发展状态以及逐步被异步OTP取代的原因: 2.异步OTP的基本原理和发展 ...查看


  • 第三章处理机调度与死锁(2)
  • 考点一 调度的基本概念和基本准则 一.单项选择题 1.假设就绪队列中有10个进程,系统将时间片设为200ms,CPU进行进程切换要花费10ms.则系统开销所占的比率约为( ). A.1% B.5% C.10% D.20% 2.下面关于进程的 ...查看


热门内容