算法中带限期作业排序问题源代码

  //算法中带限期作业排序问题

#include <iostream.h>
#include "iomanip.h"

void JOB_S(int n,int *D);

void main()
{
 int *D,*P;
 int i,n;
 cout<<"请输入要处理的作业数n:";
 cin>>n;
 D=new int[n+1]; 
 P=new int[n+1]; 
 cout<<"请输入作业i的期限值D(1-"<<n<<")"<<endl;
 for(i=1;i<=n;i++)             
 {
  cout<<"作业"<<i<<"的期限:";
  cin>>D[i];
 }
 cout<<endl;
 cout<<"请输入作业i的效益值P(1-"<<n<<")"<<endl;
 for(i=1;i<=n;i++)            
 {
  cout<<"作业"<<i<<"的效益:";
  cin>>P[i];
 }
 cout<<endl;

 JOB_S(n,D);
}
void JOB_S(int n,int *D)
{
 int i,k,r;
 int *J=new int[n+1];
 k=1;
 D[0]=0;
 J[0]=0;
 J[1]=1;
 
 for(i=2;i<=n;i++)
 {
  r=k;
  while(D[J[r]]>D[i] && D[J[r]]!=r)
   r=r-1;
  if(D[J[r]]<=D[i] && D[i]>r)
  {
   for(int x=k;x>=r+1;x--)
    J[x+1]=J[x];
   J[r+1]=i;
   k++;
  }
 }
 cout<<"该作业的最优处理顺序为:";
 for(i=1;i<=k;i++)
  cout<<setw(4)<<J[i];
 cout<<endl;}

Copyright © 2007-2012 www.chuibin.com 六维论文网 版权所有