问答题Java中的堆和栈有什么区别
问答题 阅读以下说明和C程序,将应填入(n)处的字句写在对应栏内。
【说明】
并行计算中需要将N个作业分配给N个处理器同时去完成,每个处理器都能承担这N个作业,但耗时不同。下面的程序用回溯法计算总耗时最小的一种作业分配方案,在该方案中为每个处理器分配1个不同的作业。
程序中,N个作业从0开始依次编号,N个处理器也从0开始依次编号,主要的变量说明如下:
c[i][j]:将作业i分配给处理器j的耗时;
job[i]:值为0表示作业i未分配,值为j表示作业i分配给处理器j;
processor[k]:值为0表示处理器k未分配作业,值为1表示处理器k已分配作业;
mincost:最小总耗时。 【C程序】
#include<stdio.h> #define N 8/*N表示作业数和处理器数*/
int c[N][N]; unsigned int
mincost=65535/*设置min的初始值,大于可能的总耗时*/ int
job[N],temp[N],processor[N]; void Assign(int k,unsigned int
cost) { int i;
if{{U}} (1) {{/U}}&& cost<mincost){
mincost = cost
for(i=0;i<N;i++)temp[i]=job[i];
} else {
for(i=0;i<N;i++)/*分配作业k*/
if{{U}} (2) {{/U}}&&
cost+c[k][i]<mincost){
processor[i]=1;job[k]= {{U}}(3) {{/U}};
Assign{{U}} (4) {{/U}},cost+c[k][i]);
{{U}} (5) {{/U}};job[k]=0;
}/ * if * /
} }/ *Assign * /
void main() { int
i,j;
for(i=0;i<N;i++){/*设置每个作业由不同处理器承担时耗时及全局数组的初值*/
processor[i]=0;job[i]=0;temp[i]=0;
for(j=0;j<N;j++)
scanf("%d",&c[i][j]); }
Assign(0,0);/*从作业0开始分配*/
printf("/n最小耗时=%d/n",mincost);
for(i=0;i<N;i++) printf("Job%d is assigned
to Processor%d/n",i,temp[i]); }/*main*/
问答题栈空间的最大值是多少
问答题什么是线程?它与进程有什么区别?为什么要使用多线程
问答题JSP的内置对象有哪些
问答题如何求绝对值最小的数
问答题多态的实现机制是什么
问答题如何用递归算法判断一个数组是否是递增
问答题如何进行归并排序
问答题如何设置类的构造函数的可见性
问答题forward与global-—forward有什么区别
问答题JDBC与Hibernate有什么区别
问答题输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表。要求不能创建任何新的结点,只调整指针的指向。 比如将二元查找树 10 / 6 14 / / / 4 8 12 16转换成双向链表4=6=8=10=12=14=16。
问答题最有效的计算2乘以8的方法是什么
问答题如何检测一个较大的单链表是否有环
问答题EJB规范规定EJB中禁止的操作有哪些?
问答题Struts框架的数据验证可分为几种类型
问答题doPost()方法与doGet()方法怎么选择
问答题EJB有哪些生命周期
问答题switch语句中的case结尾是否必须添加break语句?为什么
