1 条题解

  • 0
    @ 2025-2-14 21:20:39

    C :

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    int dp[110][110];
    
    int main()
    {
        int n, m;
        while(scanf("%d%d",&n,&m) != EOF){
            int A[110];
            memset(dp,0,sizeof(dp));
            for(int i = 1;i <= n; i++){
                scanf("%d",&A[i]);
            }
            for(int i = 0;i <= A[1]; i++)dp[1][i] = 1;
            for(int i = 1;i <= n; i++)dp[i][0] = 1;
            for(int i = 2;i <= n; i++){
                for(int j = 1;j <= m; j++){
                    for(int k = 0;k <= A[i]; k++){
                        if(j >= k)dp[i][j] = (dp[i][j] + dp[i-1][j-k])%1000007;
                    }
                }
            }
            printf("%d\n",dp[n][m]);
        }
        return 0;
    }
    

    C++ :

    #include <iostream>
    using namespace std;
    const int N(109);
    int data[N];
    int f[N][N]={0};
    int main()
    {
        int n,m;
        cin>>n>>m;
        for(int i=1;i<=n;i++)
            cin>>data[i];
        f[0][0]=1;
        for(int i=1;i<=n;i++)
            for(int j=0;j<=m;j++)
            {
                for(int k=0;k<=data[i];k++)
                {
                    if(j-k<0) continue;
                    f[i][j]+=f[i-1][j-k];
                }
                f[i][j]=f[i][j]%1000007;
            }
        cout<<f[n][m]%1000007<<endl;
        return 0;
    }
    

    Pascal :

    var n,m,k,i,j:longint;
        f:array[0..101,0..101] of longint;
        a:array[1..101] of longint;
    begin
      fillchar(f,sizeof(f),0);
      readln(n,m);
      for i:=0 to n do
        f[i,0]:=1;
      for i:=1 to n do
        read(a[i]);
      for i:=1 to n do
        for j:=1 to m do
          for k:=0 to a[i] do
            if j-k>=0 then f[i,j]:=(f[i,j]+f[i-1,j-k]) mod 1000007;
      writeln(f[n,m]);
    end.
    
    
    • 1

    信息

    ID
    762
    时间
    1000ms
    内存
    128MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者