算法实现——独立任务最优调度问题(C实现)

      问题描述:用两台处理机A、B处理n个作业。设第i个作业交给机器A处理时需要时间ai,若由机器B来处理,则需要时间bi。由于各个作业的特点和机器性能的关系,很可能对于某些i,有a_{i}\geq b_{i},而对于某些 j ,j\neq i,有a_{i}< b_{i}。既不能将一个作业分开由2台机器处理,也没有一台机器能同时处理2个作业。设计一个动态规划算法,使得2台机器处理完这n个作业的最短时间(从任意一台机器开工到最后一台机器停工的总时间)。研究一个实例:(a_{1},a_{2},a_{3},a_{4},a_{5},a_{6})=(2,5,7,10,5,2),(b_{1},b_{2},b_{3},b_{4},b_{5},b_{6})=(3,8,4,11,3,4)

       算法分析:对于2台给定的处理机A和B处理个作业,找出一个最优调度方案,使2台机器处理外这n个作业的时间最短。

      输入数据:由文件input.txt提供输入数据。文件的第一行是1个正整数n,表示要处理的n个作业。在接下来的两行中,每行有n个正整数,分别代表处理机A和B处理第i个作业需要的处理时间。

      结果输出:将计算出的最短处理时间输出到文件output.txt。

#include
#define MAXTIME 500
int a[MAXTIME];
int b[MAXTIME];
int minTime=10000;
int sa=0;//所有作业在机器A上运行是所需要的时间 

int main(){
	int n;//n个作业 
	
	freopen("input.txt","r",stdin);
    freopen("output.txt","w",stdout);
    
    scanf("%d",&n);        //读入作业个数 
      
    for(int i=1;i=a[k]){             //当前时间是否满足其在机器a上运行
                p[i][k]=p[i][k]i?p[i][n]:i);//业在B上运行时间,i意思是n个作业在A上运行时间
        if(minTime>t)               
            minTime=t;
    }
                
    printf("%d\n",minTime);
    return 0;
}

那么现在来检验一下吧~

(1)在代码相同路径下建立题目所需要的文件

(2)在input.txt文件中输入所需要检验的例题

算法实现——独立任务最优调度问题(C实现)_第1张图片

(3)运行代码

(4)打开output.txt文件进行检验

算法实现——独立任务最优调度问题(C实现)_第2张图片

检验完毕~

当然还有多种方法,本文章只使用了其中的一种,相信小伙伴们可以探索出更简单、更合理的程序的~

 

你可能感兴趣的:(计算机算法设计与分析,算法,c语言,数据结构)