网站大量收购独家精品文档,联系QQ:2885784924

带时限的作业排序问题.doc

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
带时限的作业排序问题

#includestdio.h #includemalloc.h int FIND(int *parent,int i) {//查找含有元素i的树根,使用压缩规则去压缩由i到根j的所有结点 int j,k,t; j=i; while(parent[j]0) j=parent[j];//找根 k=i; while(k!=j){//压缩由i到根j的结点 t=parent[k]; parent[k]=j; k=t; } return j; } void UNION(int *parent,int i,int j) {//使用加权规则合并根为i和j的两个集合 int x; x=parent[i]+parent[j]; if(parent[i]parent[j]){//i的结点少 parent[i]=j; parent[j]=x; } else{//j的结点少 parent[j]=i; parent[i]=x; } } int MIN(int n,int m) {//求n和m的最小值 if(nm) return m; else return n; } int FJS(int *D,int n,int b,int *J,int *Q) {//找J(n)的最优解,并返回最优解的个数 int i,*F,*p,j,l,m,k; F=(int *)malloc((b+1)*sizeof(int)); p=(int *)malloc((b+1)*sizeof(int)); for(i=0;i=b;i++){//将树置初值 F[i]=i; p[i]=-1; } k=0;//初始化J for(i=1;i=n;i++) {//使用贪心规则 j=FIND(p,MIN(n,D[i])); if(F[j]!=0) {//选择作业i k=k+1; J[k]=i; Q[F[j]]=i; m=F[j]; l=FIND(p,F[j]-1); UNION(p,l,j); F[j]=F[l]; } } return k;//返回最优解的个数 } int MAXMUM(int i,int j) {//求i和j的最大值 if(ij) return i; else return j; } int MAX(int *D,int i, int j) {//D(1:n)是含有n个元素数组,求出D(i,j)中的最大值并返回 int max,mid,max1,max2; if(i==j) max=D[i]; else if(i==j-1) if(D[i]D[j]) max=D[j]; else max=D[i]; else{ mid=(i+j)/2; max1=MAX(D,i,mid); max2=MAX(D,mid+1,j); max=MAXMUM(max1,max2); } return max; } void Insertionsort(int *D,int n) {//将D中的元素按非增次序分类 int j,item,i; D[0]

文档评论(0)

haihang2017 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档