博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
批处理作业调用
阅读量:2259 次
发布时间:2019-05-09

本文共 944 字,大约阅读时间需要 3 分钟。

批处理作业调用,第一行n ,n小于等于15,n行每行两个整数,输出最有调度序列。一行输出,空格分割,最后加空格,总时长。

/*嗯,时间紧迫,生怕下次来补充的时候,自己都看不懂代码所以还是简单介绍下。x,bestx,m分别代表的是当前作业调度————其中一种排列顺序,当前最优作业调度,各作业所需的处理时间。f1,f2,cf分别代表机器1完成处理时间,机器2完成处理时间,完成时间和*/#include
using namespace std;int x[100];int bestx[100];int m[100][100];int f1=0;int f2=0;int cf=0;int bestf=10000;//当前最优值,即最优的处理时间和int n;//作业数void swap(int &a,int &b){ int temp=a; a=b; b=temp;}void Backtrack(int t){ //t用来指示到达的层数(第几步,从0开始),同时也指示当前执行完第几个任务/作业 int tempf,j; if(t>n) //到达叶子结点,搜索到最底部 { if(cf
f2?f1:f2)+m[x[j]][2];//保存当前作业在机器2的完成时间 cf+=f2; //在机器2上的完成时间和 //如果该作业处理完之后,总时间已经超过最优时间,就直接回溯。 //剪枝函数 if(cf
>n; for(i=1; i<=2; i++) //i从1开始 for(j=1; j<=n; j++) cin>>m[j][i];//第j个作业,第i台机器的时间值 for(i=1; i<=n; i++) x[i]=i;//初始化当前作业调度的一种排列顺序 Backtrack(1); cout<
<< endl; return 0;}

转载地址:http://jrucb.baihongyu.com/

你可能感兴趣的文章
在Vim中复制整行
查看>>
Java是否支持默认参数值?
查看>>
如何调试Node.js应用程序?
查看>>
将浮点数限制为两位小数
查看>>
在Visual Studio中使用Git [关闭]
查看>>
如何在SQL SELECT中执行IF…THEN?
查看>>
如何从文件内容创建Java字符串?
查看>>
Array.forEach短路就像调用break
查看>>
你什么时候使用git rebase而不是git merge?
查看>>
Python的隐藏功能
查看>>
如何检查Bash中是否设置了变量?
查看>>
确定整数的平方根是否为整数的最快方法
查看>>
我应该如何道德地接近用户密码存储以便以后的明文检索?
查看>>
UNION和UNION ALL有什么区别?
查看>>
如何在Git历史记录中grep(搜索)已提交的代码
查看>>
如何创建文件并用Java写入文件?
查看>>
如何从另一个线程更新GUI?
查看>>
停止JavaScript中的setInterval调用
查看>>
什么是按位移位(位移)运算符以及它们如何工作?
查看>>
jQuery Ajax调用后如何管理重定向请求
查看>>