推荐http://www.cnblogs.com/flyinghearts/archive/2011/03/22/1991997.html
#include <iostream>
#include <vector>
using namespace std;
#define size 4
void calc(int pri[],int len[]){
vector<int> vec;
bool check[size];//判断该位是否使用过
for(int i=0;i<size;i++){//初始化
check[i] = true;
}
int sum = 0;//文件长度和
int pos;//当前最优位置
for(int j=0;j<size;j++){
double pl = -1000;//重置
for(int i=0;i<size;i++){
if(check[i]){
int temp = sum+len[i];
if(pri[i]/temp>pl){
pos = i;
}
}
}
sum += len[pos];
check[pos] = false;
vec.push_back(pos);
}
for(i=0;i<size;i++)
cout<<len[vec[i]]<<" ";
cout<<endl;
}
int main(){
int pri[]={4,3,2,1};
int len[]={1,2,3,4};
calc(pri,len);
return 0;
}