算法导论 用拟阵求解任务调度问题
来源:互联网 发布:武汉汉阳美工 编辑:程序博客网 时间:2024/05/17 19:58
#include <stdio.h>#include <stdlib.h>#define N 7void swop(int *a,int *b){int temp=*a;*a=*b;*b=temp;}int partition(int *a,int p,int r,int *b,char type){int i=p-1,x=a[r];for(int j=p;j<r;j++){if(type=='A'){if(a[j]<a[r]){i++;swop(&a[i],&a[j]);swop(&b[i],&b[j]);}}else{if(a[j]>a[r]){i++;swop(&a[i],&a[j]);swop(&b[i],&b[j]);}}}swop(&a[i+1],&a[r]);swop(&b[i+1],&b[r]);return i+1;}void quickSort(int *a,int p,int r,int *b,char type){if(p>=r)return;int q=partition(a,p,r,b,type);quickSort(a,p,q-1,b,type);quickSort(a,q+1,r,b,type);}void printA(int *a,int len){for(int i=0;i<len;i++){printf("%2d ",a[i]);}printf("\n");}bool taskIndependence(int *d,int i,int *I,int Ilen){for(int j=d[i];j<Ilen;j++){if(I[j]+1>j)return false;}for(int j=d[i];j<Ilen;j++){I[j]++;}return true;}int getMax(int *d,int len){int max=0;for(int i=0;i<len;i++){if(d[i]>max)max=d[i];}return max;}void initArray(int *a,int len){for(int i=0;i<len;i++){a[i]=0;}}void main(){int d[N]={4,2,4,3,1,4,6};int w[N]={70,60,50,40,30,20,10};quickSort(w,0,6,d,'D');int Ilen=getMax(d,N)+1;int *I=(int*)malloc(Ilen*sizeof(int));initArray(I,Ilen);int iEx=N;for(int i=0;i<iEx;i++){if(!taskIndependence(d,i,I,Ilen)){iEx--;swop(&d[i],&d[iEx]);swop(&w[i],&w[iEx]);i--;}}quickSort(d,0,iEx-1,w,'A');quickSort(d,iEx,N-1,w,'A');printA(w,7);printA(d,7);getchar();}
阅读全文
0 0
- 算法导论 用拟阵求解任务调度问题
- 算法导论-任务调度问题
- 算法导论 ch15 动态规划 任务调度
- 近似算法求解调度问题
- 算法导论 第十六章:贪心算法之单任务调度问题
- 《算法导论》笔记 第16章 *16.5 一个任务调度问题
- 算法-操作系统任务调度问题
- [算法导论读书笔记]装配线调度问题
- 【算法导论】装备线调度问题
- 【算法导论】动态规划--装配线调度问题
- 算法导论15.1 装配线调度问题
- 《算法导论》实验三:最佳调度问题的回溯算法
- 算法导论-----------------0-1背包问题dp求解
- 最大子数组求解问题(算法导论)
- 算法导论--分治策略求解最大子数组问题
- 算法导论之贪心算法:带惩罚的任务调度算法
- 图的点着色、区间着色问题及其应用(基于贪心思想的DFS回溯法求点着色问题和区间着色算法求解任务调度问题)
- [动态规划] 《算法导论》中的装配线调度问题实现
- 【python 可视化】数据透视表的用法及画饼图
- 线程池详解
- PHP中函数参数的调用及其灵活使用方法
- 作业一 数7
- Elasticsearch概念
- 算法导论 用拟阵求解任务调度问题
- Zookeeper实例原生API--删除节点接口权限
- java 反射机制
- Android点亮屏幕并解锁
- 键值对操作
- linux opendir和readdir的使用
- 自定义View实心圆和圆环
- Android设计与实现-卷1-JNI框架基础
- SVM 透彻理解与分析