dp水题
两队比赛:(1)一队一直领先比分直到比赛结束。(2)一队的比分一直没有领先,直到对手得到最后一分
#include <iostream> #include <cstring> #include <cstdio> using namespace std; int dp[2010][2010]; int mod=1000000007; int main() { int T ; scanf("%d",&T); for(int t=1;t<=T;t++) { int a,b; char c; scanf("%d%c%d",&a,&c,&b); memset(dp,0,sizeof(dp)); //dp[1][0]=1; dp[1][0]=1; for(int i=2;i<=a;i++) { int j; for(j=0;j<=b;j++) { if(i-1>j) { dp[i][j]=(dp[i][j]+dp[i-1][j])%mod; } if(i>j-1) { dp[i][j]=(dp[i][j]+dp[i][j-1])%mod; } } } cout<<"Case #"<<t<<": "<<dp[a][b]<<" "; memset(dp,0,sizeof(dp)); dp[0][0]=1; for(int i=0;i<=a;i++) { int j; for(int j=1;j<=b;j++) { if(i<=j&&i>0) { dp[i][j]=(dp[i-1][j]+dp[i][j])%mod; } if(i<=j-1) { dp[i][j]=(dp[i][j]+dp[i][j-1])%mod; } } } cout<<dp[b][b]<<endl; } return 0; }