求助

P1077 [NOIP2012 普及组] 摆花

``` for(int k=j;k>=j-a[i];k--) { if(k>=0) { dp[i][j]+=dp[i-1][k]%100000007; dp[i][j]%=100000007; } else{ break; } } ``` 这里改成 ``` for(int k=0;k<=min(j,a[i]);k++) dp[i][j]=(dp[i][j]+dp[i-1][j-k])%mod; ```
by sheeplittlecloud @ 2021-08-24 16:23:33


那个mod就是100000007
by sheeplittlecloud @ 2021-08-24 16:24:24


@[Freddymo](/user/550816) 还有这段 ``` for(int i=0;i<=m;i++) { dp[i][0]=1; } ``` 改成 ``` dp[0][0]=1; ```
by sheeplittlecloud @ 2021-08-24 16:28:07


@[Freddymo](/user/550816) 算了这是我的代码,照着改吧 ``` #include<bits/stdc++.h> using namespace std; const int maxn=105,mod=1000007; int n,m,a[maxn],f[maxn][maxn]; int main() { cin>>n>>m; for(int i=1;i<=n;i++) cin>>a[i]; f[0][0]=1; for(int i=1;i<=n;i++) for(int j=0;j<=m;j++) for(int k=0;k<=min(j,a[i]);k++) f[i][j]=(f[i][j]+f[i-1][j-k])%mod; cout<<f[n][m]<<endl; return 0; } ```
by sheeplittlecloud @ 2021-08-24 16:29:26


@[Freddymo](/user/550816) 你的 $100000007$ 多打了2个0。。。
by sheeplittlecloud @ 2021-08-24 16:31:49


ok,谢谢巨佬
by Freddymo @ 2021-08-24 19:40:36


已经满分辽~
by Freddymo @ 2021-08-24 19:42:50


|