#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]]