0
点赞
收藏
分享

微信扫一扫

摆花问题

狗啃月亮_Rachel 2022-04-17 阅读 120
c++

问题描述:

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

试编程计算,一共有多少种不同的摆花方案。

输入格式:

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

输出格式:

输出只有一行,一个整数,表示有多少种方案。

样例输入:

2  4

3  2

样例输出:

2

#include <algorithm>
#include<iostream>
using namespace std;
int A[105][105];
int a[105];
int main()
{
	int n,m;
	cin>>n>>m;
	for(int i=1;i<=n;i++)
	{
		cin>>a[i];
	}
	A[0][0]=1; //不摆放花也是一种方案
	for(int i=1;i<=n;i++)//花的种类
	{
		for(int j=0;j<=m;j++)//花的朵数
		{
			for(int k=0;k<=min(a[i],j);k++) 
			{
				A[i][j]=(A[i][j]+A[i-1][j-k])%1000007;
			}
		}
	}
	cout<<A[n][m]%1000007<<endl;
    return 0;
}
举报

相关推荐

0 条评论