求C语言高手 多机调度问题 ,设计个程序 要C语言版的 不要C++的 谢谢啊

多机调度问题,设有n个独立的作业,由m台机器进行加工处理,作业i所需处理时间为ti,作业一开始就不可中断,不可拆分为更小作业,给出方案在最短时间内完成所有作业... 多机调度问题 ,设有n个独立的作业,由m台机器进行加工处理,作业i所需处理时间为ti,作业一开始就不可中断,不可拆分为更小作业,给出方案在最短时间内完成所有作业 展开
 我来答
齐戈在写作
2011-06-15 · TA获得超过162个赞
知道小有建树答主
回答量:78
采纳率:0%
帮助的人:102万
展开全部
#include<stdio.h>
#define N 10

typedef struct node
{
int ID,time;
}jobnode;

typedef struct Node
{
int ID,avail;
}manode;

manode machine[N];
jobnode job[N];

manode* Find_min(manode a[],int m)
{
manode* temp=&a[0];
for(int i=1;i<m;i++)
{
if(a[i].avail<temp->avail)
temp=&a[i];
}
return temp;
}
void Sort(jobnode t[],int n)
{
jobnode temp;
for(int i=0;i<n-1;i++)
for(int j=n-1;j>i;j--)
{
if(job[j].time>job[j-1].time)
{
temp=job[j];
job[j]=job[j-1];
job[j-1]=temp;
}
}

}

void main()
{
int n,m,temp;
manode* ma;
printf("输入作业数目(作业编号按输入顺序处理)\n");
scanf("%d",&n);
printf("输入相应作业所需处理时间:\n");
for(int i=0;i<n;i++)
{
scanf("%d",&job[i].time);
job[i].ID=i+1;
}
printf("输入机器数目(机器编号按输入顺序处理)\n");
scanf("%d",&m);
for(i=0;i<m;i++)
{
machine[i].ID=i+1;
machine[i].avail=0;
}
putchar('\n');
if(n<=m)
{
printf("为每个作业分配一台机器,可完成任务!\n");
return;
}
Sort(job,n);
for(i=0;i<n;i++)
{
ma=Find_min(machine,m);
printf("将机器: %d 从 %d -----> %d 的时间段分配给作业: %d\n",ma->ID,ma->avail,ma->avail+job[i].time,job[i].ID);
ma->avail+=job[i].time;
}
temp=machine[0].avail;
for(i=1;i<m;i++)
{
if(machine[i].avail>temp)
temp=machine[i].avail;
}
putchar('\n');
printf("该批作业处理完成所需加工时间为: %d\n",temp);

}

刚写的,试过了,运行通过.主要运用贪心算法,应该算比较典型的吧,呵呵,该睡觉了,明天还有考试呢,希望对你有帮助!共同进步哈!
意法半导体(中国)投资有限公司
2023-06-12 广告
单片机汇编程序是用汇编语言编写的程序,用于控制单片机的操作。汇编语言是一种比较接近计算机硬件语言的低级语言,相对于高级语言来说更容易理解和实现。下面是单片机汇编程序的基本步骤:1. 将代码和数据汇编到规定的段中。2. 在存储器中用未初始化的... 点击进入详情页
本回答由意法半导体(中国)投资有限公司提供
kwrdps9e5
2011-06-15 · TA获得超过472个赞
知道小有建树答主
回答量:623
采纳率:0%
帮助的人:351万
展开全部

#include "stdio.h"

struct date
{
unsigned short year ;
unsigned char month ;
unsigned char day ;
};
date today,tomorrow ;

void main()
{
unsigned char ltd[13]=;

while(1)
{

while(!ltd[0])

{
printf("请输入日期,格式如:2011,4,1\n");

scanf("%d,%d,%d",&today.year,&today.month,&today.day);

if(today.day>ltd[today.month]) printf("错误的日期输入.\n");
else if((today.day==29)&&(today.month==2)&&((today.year%100)==0)) printf("错误的日期输入.\n");
else if((today.day==29)&&(today.month==2)&&((today.year%4)!=0)) printf("错误的日期输入.\n");
else ltd[0]=1;
}

if(((today.month==2)&&(today.year%4==0)&&(today.year%100==0))||(today.year%4!=0)) ltd[2]=28;
tomorrow.day=(today.day+1)%(ltd[today.month]+1);
tomorrow.month=(today.month+(today.day+1)/ltd[today.month])%13;
tomorrow.year=today.year+(today.month+(today.day+1)/ltd[today.month])/13;
if(tomorrow.day==0) tomorrow.day=1;
if(tomorrow.month==0) tomorrow.month=1;
printf("%d,%d,%d,",tomorrow.year,tomorrow.month,tomorrow.day);
ltd[0]=0;
ltd[2]=29;
}
}

// 以上程序经TURBO C验证。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
创作者y3e6hNnJx6
2019-08-04 · TA获得超过4161个赞
知道大有可为答主
回答量:3087
采纳率:29%
帮助的人:142万
展开全部
多级反馈队列调度算法多级反馈队列调度算法是一种cpu处理机调度算法,unix操作系统采取的便是这种调度算法。多级反馈队列调度算法即能使高优先级的作业得到响应又能使短作业(进程)迅速完成。(对比一下fcfs与...
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式