问题描述
  小明的花店新开张,为了吸引顾客,他想在花店的门口摆上一排花,共m盆。通过调查顾客的喜好,小明列出了顾客最喜欢的n种花,从1到n标号。为了在门口展出更多种花,规定第i种花不能超过ai盆,摆花时同一种花放在一起,且不同种类的花需按标号的从小到大的顺序依次摆列。
  试编程计算,一共有多少种不同的摆花方案。
输入格式
  第一行包含两个正整数n和m,中间用一个空格隔开。
  第二行有n个整数,每两个整数之间用一个空格隔开,依次表示a1、a2、……an。
输出格式
  输出只有一行,一个整数,表示有多少种方案。注意:因为方案数可能很多,请输出方案数对1000007取模的结果。
样例输入
2 4
3 2
样例输出
输入输出样例说明
  有2种摆花的方案,分别是(1,1,1,2), (1,1,2,2)。括号里的1和2表示两种花,比如第一个方案是前三个位置摆第一种花,第四个位置摆第二种花。
数据规模和约定
  对于20%数据,有 0<n≤8,0<m≤8,0≤ai≤8;
  对于50%数据,有0<n≤20,0<m≤20,0≤ai≤20;
  对于100%数据,有0<n≤100,0<m≤100,0≤ ai≤100。
 
package 蓝桥杯java算法训练;

import java.util.Scanner;

public class _5摆花 {
//动态规划问题,设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]); }
}

  

最新文章

  1. 多个jar包合并成一个jar包的办法
  2. 在java中获取attr的值
  3. Html登录表单阻止自动填充
  4. C#学习笔记(二)——变量和表达式
  5. 知道创宇研发技能表v3.0
  6. android结束进程、退出application的方法
  7. POJ 3761 Bubble Sort(乘方取模)
  8. [置顶] 最小生成树Prim算法
  9. Exploring TCP state machine by graphs
  10. unity 3d 生成apk文件时,设置图标
  11. bash之管线命令
  12. 查看 Apache并发请求数及其TCP连接状态【转】
  13. Python:Day25 成员修饰符、特殊成员、反射、单例
  14. 【学习总结】C-翁恺老师-入门-第3周&lt;循环&gt;
  15. ubuntu Ros环境halcon的一个程序
  16. python常用函数总结
  17. 开源网站流量统计系统Piwik源码分析——参数统计(一)
  18. virtualbox - 2台虚拟机之间通过ssh互访
  19. spring boot mybatis sql打印到控制台
  20. javascript仿新浪微博图片放大缩小及旋转效果

热门文章

  1. sublime python运行插件
  2. ambassador kubernetes native api gateway
  3. 读懂IL代码就这么简单 ---- IL系列文章
  4. JVM内存管理之GC算法精解(五分钟教你终极算法---分代搜集算法)
  5. find: ‘/run/user/1000/gvfs’: Permission denied
  6. 全局获取Context
  7. RandomStringUtils工具类(java随机生成字符串)
  8. python多标签分类模版
  9. Java-Runoob-高级编程:Java 网络编程
  10. JavaScript 中的函数介绍