[Offer收割]编程练习赛25 register

Ended

Participants:399

Verdict:Wrong Answer
Score:0 / 100
Submitted:2017-09-03 14:27:07

Lang:G++

Edit
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include<iostream>
#include<string.h>
using namespace std;
int dp[301][301][602];
int n,k;
int dodo(int a,int b,int c){
    
    if(a<0||b<0||c<0)return 0;
    if (dp[a][b][c]!=-1) return dp[a][b][c];
    
    
    if(c==0||c<b||c<b+a) {dp[a][b][c]=0;return 0;}
    
    //if(b==n) {dp[a][b][c]=dodo(a,b,c-1);return dp[a][b][c];}
    
    
    
    dp[a][b][c]=0;
    
    if(1<=b) dp[a][b][c]+=dodo(a,b-1,c-1);
    if(c-b<=n){
        if(c-b-a==b) dp[a][b][c]+=dodo(a-1,b,c-1);
        else dp[a][b][c]+=dodo(a,b,c-1);
        
        
    }
    dp[a][b][c]%=1000000007;
    
    return dp[a][b][c];
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX