zoukankan      html  css  js  c++  java
  • 动态规划算法

    package poj;
    
    /**
     * baolisousuo
     * @author Administrator
     *
     */
    public class Solution2 {
    
    	private static int [] arr = {1,2,4};
    	private static int aim = 3;
    	
    	public static void main(String[] args) {
    		System.out.println(arr[0]);
    		int result = countWays(arr,aim);
    		System.out.println(result);
    	}
    	
    	public static int coins1(int[]arr,int aim){
    		if (arr == null || aim <0 || arr.length == 0) {
    			return 0;
    		}
    		return process1(arr,0,aim);
    	}
    
    	private static int process1(int[] arr, int index, int aim) {
    		int res = 0;
    		if (index == arr.length) {
    			res = aim==0?1:0;
    		}else{
    			for (int i = 0;arr[index]*i <= aim;i++) {
    				res+=process1(arr,index+1,aim-arr[index]*i);
    			}
    		}
    		return res;
    	}
    	
    	//jiyi
    	public static int coins2(int[]arr,int aim){
    		if (arr == null || arr.length == 0||aim <0) {
    			return 0;
    		}
    		int [][]map = new int[arr.length+1][aim+1];
    		return process2(arr,0,aim,map);
    	}
    
    	private static int process2(int[] arr, int index, int aim, int[][] map) {
    		int res = 0;
    		if (index == arr.length) {
    			res = aim == 0?1:0;
    		}else{
    			int mapValue = 0;
    			for (int i = 0;arr[index] * i <= aim;i++) {
    				mapValue = map[index+1][aim-arr[index]*i];
    				if (mapValue != 0) {
    					res+=mapValue == -1?0:mapValue;
    				}else{
    					res+=process2(arr,index+1,aim-arr[index]*i,map);
    				}
    			}
    		}
    		map[index][aim] =res == 0?-1:res;
    		return res;
    	}
    	//dp
    	public static int countWays(int []arr,int aim){
    		int [] f = new int[1001];
    		for (int i = 0;i<f.length;i++) {
    			f[i] = 0;
    		}
    		f[0] = 1;
    		for (int i = 0;i<arr.length;i++) {
    			for (int j = arr[i];j<=aim;j++) {
    				f[j] =f[j-arr[i]]; 
    			}
    		}
    		
    		return f[aim];
    	}
    	
    	
    	
    	
    	
    	
    	
    	
    	
    	
    }
    

      

  • 相关阅读:
    Android开发自学笔记(Android Studio)—4.1布局组件
    交换机远程管理
    ThinkPHP开发博客系统笔记之二
    PHP编码规范
    Kali Linux学习笔记
    CSS编码规范
    ThinkPHP开发博客系统笔记之一
    2 Powershell与Cmd以及Unix/Linux Shell
    不同vlan间通信的三种配置方式
    配置超级用户口令(Cisco IOS系统)
  • 原文地址:https://www.cnblogs.com/airycode/p/5124667.html
Copyright © 2011-2022 走看看