#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define nt long long
nt st[5][11][11][11][3];
nt dfs(int a, int b, int c, int d, int s)
{
    nt count = 0;
    if(st[s][a][b][c][d]>=0) return st[s][a][b][c][d];
    if((a|b|c|d)==0)
    {
        if(s==4) return 1;
        return 0;
    }
    if(a) count+=dfs(a-1,b,c,d,s==0?1:s);
    if(b) count+=dfs(a,b-1,c,d,s==1?2:s);
    if(c) count+=dfs(a,b,c-1,d,s==2?3:s);
    if(d) count+=dfs(a,b,c,d-1,s==3?4:s);
    return(st[s][a][b][c][d]=count);
}
int main(void)
{
    memset(st, -1, sizeof(st));
    printf("%I64d\n", dfs(10, 10, 10, 2, 0));
    system("pause");
    return 0;
}
    
2491687516780289 ?
[[it] 本帖最后由 卧龙孔明 于 2008-10-4 17:00 编辑 [/it]]