zoukankan      html  css  js  c++  java
  • 批处理作业调度问题

    给定n个作业的集合J={J1,J2,…,Jn}。每一个作业有两项任务分别在两台机器上完成。每个作业必须先由机器1处理,再由机器2处理。作业Ji需要机器j的处理时间为tji,i=1,2,…n,j=1,2。对于一个确定的作业调度,设Fji是作业i在机器j上完成处理的时间。则所有作业在机器2上完成处理的时间和f=F21+F22+…+F2n称为该作业调度的完成时间和。

            批处理作业调度问题要求,对于给定的n个作业,制定最佳的作业调度方案,使其完成时间和最小。


    样例输入

    3
    2 1
    3 1
    2 3
    样例输出
    18
    1 3 2
    自己在纸上画画示例的图,并结合着排列数的回溯很容易写出代码

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 int n;
     4 int x[100][2];
     5 int x1[100];
     6 int x2[100];
     7 int sum1=0,sum2=0;
     8 int best=100000;
     9 int num;
    10 void swap(int &a,int &b){
    11  int temp;
    12  temp=a;
    13  a=b;
    14  b=temp;
    15 }
    16 void backtrace(int level)
    17 {
    18      if(level>n){
    19 
    20             sum1=0;
    21             sum2=0;
    22             num=0;
    23          for(int i=1;i<=n;i++){
    24                 sum1+=x[x1[i]][0];
    25                 int temp=max(sum1,sum2);
    26                 sum2=(temp+x[x1[i]][1]);
    27                 num+=sum2;
    28          }
    29          if(num<best){
    30             best=num;
    31             for(int i=1;i<=n;i++){
    32                 x2[i]=x1[i];
    33             }
    34          }
    35      }else{
    36         for(int i=level;i<=n;i++){
    37                 swap(x1[level],x1[i]);
    38                 backtrace(level+1);
    39                 swap(x1[level],x1[i]);
    40         }
    41      }
    42 }
    43 int main()
    44 {
    45     cin >> n;
    46     for(int i=1;i<=n;i++){
    47         for(int j=0;j<=1;j++){
    48             cin >> x[i][j];
    49         }
    50     }
    51     for(int i=1;i<=n;i++){
    52          x1[i]=i;
    53     }
    54     backtrace(1);
    55     cout << best << endl;
    56     for(int i=1;i<=n;i++){
    57         cout << x2[i]<< " ";
    58     }
    59     return 0;
    60 }

  • 相关阅读:
    MongoDB学习
    Linux 硬盘分区、分区、删除分区、格式化、挂载、卸载
    openstack中数据库连接数太多--pymysql.err.OperationalError,1040, u'Too many connections'
    openstack各服务端口使用情况
    linux常用命令
    云计算---OpenStack Neutron详解
    shell---数据流重定向
    云计算---openstack创建虚拟机过程
    SpringMvc面试题
    Linux 本机/异机文件对比
  • 原文地址:https://www.cnblogs.com/henuliulei/p/10196118.html
Copyright © 2011-2022 走看看