为了写算法课的实验报告而写的代码,权当参考
class Greedy
{
int backpack;
float weight[]=new float[10];
float value[]=new float[10];
int order[]=new int[10];
float wv[]=new float[10];
Greedy(float weight[],float value[],int backpack)
{
this.backpack=backpack;
this.value=value;
this.weight=weight;
for (int i=0;i<weight.length;i++)
{
wv[i]=value[i]/weight[i];
}
QuickSort_upper(wv);
for (int i=0;i<weight.length;i++)
{
for (int j=0;j<wv.length;j++)
{
if (value[j]/weight[j]==wv[i])
order[i]=j;
}
}
}
void Switcher(float a,float b)
{
a=0;
b=0;
}
void QuickSort_upper(float a[])
{
for(int i=0;i<a.length-1;i++)
{
for(int j=0;j<a.length-1-i;j++)
{
if (a[j]>a[j+1])
{
float x=a[j];
a[j]=a[j+1];
a[j+1]=x;
}
}
}
}
int put()
{
for (int i=order.length-1;i>=0;i--)
{
backpack-=weight[order[i]];
if(backpack<weight[order[i-1]])
return i;
}
return 0;
}
void end(int i)
{
System.out.println("装入顺序:");
for(int j=order.length-1;j>=i;j--)
System.out.print((order[j]+1)+"\t");
}
void text()
{
System.out.println("价值/质量排行(从低到高)");
System.out.println("位置"+"\t"+"比例"+"\t");
for(int i=0;i<order.length;i++) {
System.out.print((order[i]+1)+ "\t");
System.out.println(wv[i]);
}
}
}
public class Main {
public static void main(String[] args) {
float weight[]={7,4,5,8,6,2,10,3,1,9};
float value[]={4,7,3,10,2,9,1,6,8,5};
int backpack=20;
Greedy g=new Greedy(weight,value,backpack);
g.text();
System.out.println("\n"+"背包大小:"+backpack+"\n");
g.end(g.put());
}
}
运行结果如图