编辑代码

class Main {
	public static void main(String[] args) {
        int w=100;//背包的容量

        Bag[] p=new Bag[5];
        p[0] = new Bag(100,100,"黄豆");
        p[1] = new Bag(30,90,"绿豆");
        p[2] = new Bag(60,120,"红豆");
        p[3] = new Bag(20,80,"黑豆");
        p[4] = new Bag(50,75,"青豆");

        sort(p);

        bG(p,0,w,0.0);
	}

    public static void sort(Bag[] p)
    {
        Bag t;
        for(int i=0;i<p.length;i++)
        {
            int max=i;
            t=p[i];
            for(int j=i;j<p.length;j++)
            {
                if(t.wi<p[j].wi)
                {
                    t=p[j];
                    max=j;
                }
            }
            t=p[i];
            p[i]=p[max];
            p[max]=t;

        }
    }


     public static void bG(Bag[] p,int k,int w,double v)
    {
        for(int i=k; i < p.length; i++){
            if(p[i].weight<=w)
            {
                v=v+p[i].value;
                System.out.println(p[i].pid+"全部装入,当前背包价值为"+v);
                w=w-p[i].weight;
            }else{
                double a=w*p[i].wi;//当前价值
                v=v+a;
                System.out.println(p[i].pid+"装入了"+((double)w/p[i].weight)+",当前背包价值为"+v);
                break;
            }

        }
    }
}


class Bag
{
    public int weight;//重量
    public int value;//价值
    public double wi;//权重
    public String pid;//背包名称
    public  Bag(int w,int v,String pid)
    {
        this.weight=w;
        this.value=v;
        this.pid=pid;
        this.wi=(double)value/weight;
    }
}