能不能仔细一点啊。。。
#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #define mod 12345678 using namespace std; int n,m,p,dp[155][155][21][21]; int main() { scanf("%d%d%d",&n,&m,&p); dp[0][0][0][0]=1; for (int i=0;i<=n;i++) for (int j=0;j<=m;j++) for (int k=0;k<=min(i,p);k++) for (int l=0;l<=min(j,p);l++) { int ret=dp[i][j][k][l]; if (i<n && k<p) dp[i+1][j][k+1][max(0,l-1)]=(dp[i+1][j][k+1][max(0,l-1)]+dp[i][j][k][l])%mod; if (j<m && l<p) dp[i][j+1][max(0,k-1)][l+1]=(dp[i][j+1][max(0,k-1)][l+1]+dp[i][j][k][l])%mod; } int ans=0; for (int i=0;i<=p;i++) for (int j=0;j<=p;j++) ans=(ans+dp[n][m][i][j])%mod; printf("%d ",ans); return 0; }