摆花

1778: 摆花

时间限制: 1 Sec  内存限制: 128 MB
提交: 173  解决: 67
[提交][状态][讨论版][命题人:admin]

题目描述

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

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

输入

第一行包含两个正整数n和m,中间用一个空格隔开。

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

0<n≤100,0<m≤100,0≤ ai≤100

输出

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

样例输入

2 4
3 2

样例输出

2

dp[i][j] 表示用前i种花摆j盆的总数

dp[i][j] = ∑dp[i-1][k]   min(0, j-a[i])<=k<=j  表示第i种花放0~a[i]朵的情况之和

#include<cstdio>
#include<algorithm>
using namespace std;
const int mod=1000007;
int dp[110];
int sum[110],a[110];
int main()
{
    int n,m;
    scanf("%d%d",&n,&m);
    for(int i=1;i<=n;i++){
        scanf("%d",&a[i]);
        sum[i]=a[i]+sum[i-1];
    }
    for(int i=0;i<=a[1];i++){
        dp[i]=1;
    }
    for(int i=2;i<=n;i++){
        for(int j=m;j>=0;j--){
            for(int k=1;k<=a[i];k++){
                if(j-k>=0){
                    dp[j]=(dp[j]+dp[j-k])%mod;
                }
            }
        }
    }
    printf("%d\n",dp[m]);
    return 0;
}

下面有个大神sher杨用的是母函数来做这题。

详细可查询https://blog.csdn.net/sudu6666/article/details/79609905

#include<stdio.h>
#include <algorithm>
#include<iostream>
#include<string.h>
#include<vector>
#include<stdlib.h>
#include<math.h>
#include<queue>
#include<deque>
#include<ctype.h>
#include<map>
#include<set>
#include<stack>
#include<string>
#include<algorithm>
#define ll long long
#define INF 0x3f3f3f3f
#define FAST_IO ios::sync_with_stdio(false)
const double PI = acos(-1.0);
const double eps = 1e-6;
using namespace std;

int a[1005],c1[1005],c2[1005];
int main()
{
    int n,m;
    cin>>n>>m;

    for(int i=1;i<=n;i++)
        cin>>a[i];

    for(int i=0;i<=a[1];i++)
        c1[i]=1;

    for(int i=2;i<=n;i++)
    {
        for(int j=0;j<=m;j++)
            for(int k=0;j+k<=m && k<=a[i];k++)
                c2[j+k]+=c1[j],c2[j+k]%=1000007;
        memcpy(c1,c2,sizeof(c2));
        memset(c2,0,sizeof(c2));
    }

    cout<<c1[m]<<endl;
    return 0;
}

阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页