zoukankan      html  css  js  c++  java
  • 背包问题

    背包问题

    问题描述
    enter description here

    二 问题分析
    enter description here
    **三 代码实现

            package knapsnap;
    
    import java.io.BufferedWriter;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.util.Arrays;
    import java.util.Comparator;
    
    public class bin
    {
        public static void main(String[] args) throws IOException
        {
            int []w= {0,10,20,30}; 
            int []v= {0,60,100,120}; 
            int c=50;
            element []ele=new element[w.length-1] ;
            for(int i=1; i<w.length; i++)
            {
            	ele[i-1]=new element(w[i],v[i],i);
            }
            greedyLoading myGreedyLoading=new greedyLoading(ele, c);
    
        }
    }
    class element   //集装箱类
    {
        float w;   //重量   
        float v;   //价值
        int i;     //编号
        float x=0;   //是否上船
        public element(int w,int v, int i)
        {
            this.w=w;
            this.v=v;
            this.i=i;
        }
    }
    class greedyLoading
    {
        element []ele;
        float c;            //船的容量
        float rc;           //剩余载重量
        float optv=0;       //最优价值
        float optw=0;       //最优载重
        public greedyLoading(element []ele,int c) throws IOException
        {
            this.ele=ele;
            this.c=c;
            this.rc=c;
            GreedyLoading();
            display();
        }
        public void GreedyLoading()
        {
        	Arrays.sort(ele, new Comparator<element>(){
                //传入的时候由用户自己选
                @Override
                public int compare(element o1, element o2) {
                    // TODO Auto-generated method stub
                    float finsh1 = o1.v/o1.w;
                    float finsh2 = o2.v/o2.w;
                    if (finsh1>finsh2)
                    {
                    	return -1;
                    }
                    else
                    {
                    	if (finsh1<finsh2)
                        {
                        	return 1;
                        }else 
                        {
                        	return 0;
                        }
                 
                    }
                    
                }
            });
        	int i;
        	for(i=0; i<ele.length; i++)
        	{
        		if(ele[i].w<=rc)
        		{
        			ele[i].x=1;  //安排
        			rc-=ele[i].w;
        			optw+=ele[i].w;
        			optv+=ele[i].v;
        		}
        		else 
        		{
        			break;
        		}
        	}
        	if(i<ele.length)
        	{
        		ele[i].x=rc/ele[i].w;
        		optw+=ele[i].w*ele[i].x;
                optv+=ele[i].v*ele[i].x;
        		rc-=ele[i].w*ele[i].x;
        	}
        }
        public void display() throws IOException
        {
        	BufferedWriter fout=new BufferedWriter(new FileWriter("out.txt"));
        	fout.write("c="+c);
            fout.newLine();
            fout.write("rc="+rc);
            fout.newLine();
            fout.write("optw="+optw);
            fout.newLine();
            fout.write("optv="+optv);
            fout.newLine();
            for(int i=0; i<ele.length; i++)
            {
                fout.write("ele["+i+"]:");
                fout.newLine();
                fout.write("i:	"+ele[i].i);
                fout.newLine();
                fout.write("w:	"+ele[i].w);
                fout.newLine();
                fout.write("v:	"+ele[i].v);
                fout.newLine();
                fout.write("x:	"+ele[i].x);
                fout.newLine();
                fout.write("+++++++++++++++++++");
                fout.newLine();
            }
            fout.flush();
        }
    }
    
    
    
    

    四 运行结果
    enter description here

    五 总结收获

    1. 练习手速

    六 不足

    1. 手速较慢
  • 相关阅读:
    用webclient.DownloadFile下载exe文件时大小为0
    C# ,asp.net 获取当前,相对,绝对路径(转)
    c#读取进程列表判断程序是否已经启动(转)
    如何提升页面渲染效率
    前端知识点总结——VUE
    ie7ajax 跨域 no transport 解决办法
    酷炫网址
    框架学习官网
    JavaScript数组方法大全(推荐)
    rem是如何实现自适应布局的
  • 原文地址:https://www.cnblogs.com/Howbin/p/9921956.html
Copyright © 2011-2022 走看看