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

    public class PacketDemo1 {
         int V;
         int T;
         int f[];
         int w[];//价值                            
         int c[];//体积                          
         int flag;
         int INF=-66536;
         //核心
         public void packet(){
        	 if(flag==1){
        	    for(int i=0;i<=V;i++){                       //背包可以不存储满
        	      f[i]=0;
       	        }
        	 }
        	 if(flag==0){
        		 f[0]=0;
        		  for(int i=0;i<=V;i++){                       //背包必须存储满
            	      f[i]=INF;
           	        }
        	 }
        	 for(int i=0;i<T;i++)
        		 for(int v=V;v>=c[i];v--){
        			 f[v]=max(f[v-c[i]]+w[i],f[v]);
        		 }
        	 System.out.println("背包所能容纳的最大价值为:"+f[V]);
         }
         
    	 public int max(int a,int b){
    		 return a>b?a:b;
    	 }
    	 public void pack(){
    		 Scanner sc=new Scanner(System.in);
    		 System.out.println("请输入背包容积");
    		 V=sc.nextInt();
    		 f=new int[V+1];
    		 System.out.println("请输入物品数量");
    		 T=sc.nextInt();
    		 w=new int[T];
    		 c=new int[T];
    		 System.out.println("请分别输入物品价值");
    		 for(int i=0;i<T;i++){
    			 w[i]=sc.nextInt();
    		 }
    		 System.out.println("请分别输入物品体积");
    		 for(int i=0;i<T;i++){
    			 c[i]=sc.nextInt();
    		 }
    		 System.out.println("是否必须装满  是:0  否:1");
    		 flag=sc.nextInt();
    		 packet();
    	 }
    	
    	public static void main(String[] args) {
    		PacketDemo1 d=new PacketDemo1();
    		d.pack();
    
    	}
    
    }
    

    版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 相关阅读:
    CSS3中新增的对文本和字体的设置
    PAT1107:Social Clusters
    Git的一些操作
    PAT1029:Median
    PAT1024:Palindromic Number
    PAT1028:List Sorting
    PAT1035: Password
    PAT1133:Splitting A Linked List
    PAT1017:Queueing at Bank
    PAT1105:Spiral Matrix
  • 原文地址:https://www.cnblogs.com/dingxiaoyue/p/4931852.html
Copyright © 2011-2022 走看看