zoukankan      html  css  js  c++  java
  • Java实现 蓝桥杯 算法提高VIP 摆花 dp 记忆搜索 2种做法 多重背包

    题目描述

    小明的花店新开张,为了吸引顾客,他想在花店的门口摆上一排花,共m盆。通过调查顾客的喜好,小明列出了顾客最喜欢的n种花,从1到n标号。为了在门口展出更多种花,规定第i种花不能超过ai盆,摆花时同一种花放在一起,且不同种类的花需按标号的从小到大的顺序依次摆列。
    试编程计算,一共有多少种不同的摆花方案。

    样例说明

    有2种摆花的方案,分别是(1,1,1,2), (1,1,2,2)。括号里的1和2表示两种花,比如第一个方案是前三个位置摆第一种花,第四个位置摆第二种花。
    数据规模和约定
    对于100%数据,有0< n≤100,0< m≤100,0≤ ai≤100。

    输入

    第一行包含两个正整数n和m,中间用一个空格隔开。
    第二行有n个整数,每两个整数之间用一个空格隔开,依次表示a1、a2、……an。

    输出

    输出只有一行,一个整数,表示有多少种方案。注意:因为方案数可能很多,请输出方案数对1000007取模的结果。

    样例输入

    2 4
    3 2
    样例输出

    2

    import java.util.Scanner;
    
    
    public class baihua {
    	//动态规划问题,设f[i][j]是前i种花摆放j盆的方案,则f[i][j]=f[i-1][j-k]
    	   public static void main(String[] args) {
    	      Scanner scanner = new Scanner(System.in);
    	      int n = scanner.nextInt();//n种花
    	      int m = scanner.nextInt();//共m盆
    	      int[] a = new int[n+1];
    	      int[][] f = new int[n+1][m+1] ;
    	      for (int i = 1; i <= n; i++) {
    	        a[i] = scanner.nextInt();
    	      }
    	      //前1种花,摆放a[1]盆就一种方案
    	      for (int i = 1; i <= a[1]; i++) {
    	        f[1][i] = 1;
    	      }
    	      //前i中花,摆放0盆就一种方案
    	      for (int i = 1; i <= n; i++) {
    	        f[i][0] = 1;
    	    }
    	      //前i种花,摆放j盆共f[i][j]=f[i][j]+f[i-1][j-k]种
    	      for (int i = 2; i <= n; i++) {
    	         for (int j = 1; j <= m; j++) {
    	            for (int k = 0; k <= a[i]&&k<=j; k++) {
    	                f[i][j]=f[i][j]+f[i-1][j-k];
    	                f[i][j] = f[i][j] % 1000007;
    	            }
    	        }
    	    }
    	      System.out.println(f[n][m]);
    	       
    	   }
    
    }
    
    
  • 相关阅读:
    ubuntu12.04 死机 卡屏 画面冻结解决方案
    Install Firefox 20 in Ubuntu 13.04, Ubuntu 12.10, Ubuntu 12.04, Linux Mint 14 and Linux Mint 13 by PPA
    ListView1.SelectedItems.Clear()
    android studio 下载地址
    jquery.slider.js jquery幻灯片测试
    jquery.hovermenu.js
    jquery.tab.js选项卡效果
    适配 placeholder,jquery版
    jquery.autoscroll.js jquery自动滚动效果
    将 Google Earth 地图集成到自己的窗体上的 简单控件
  • 原文地址:https://www.cnblogs.com/a1439775520/p/13079491.html
Copyright © 2011-2022 走看看