猫和老鼠玩象棋,

来源:互联网 发布:淘宝达人佣金链接 编辑:程序博客网 时间:2024/04/27 21:29

猫和老鼠玩象棋,玩了M+N局,猫赢了M局 老鼠赢了N局 N>M,而且在整个过程中,猫的得分从来没有超过过老鼠,问共有多少种可能的比赛得分过程 

思路是博弈树,向右遍历表示老鼠赢了,向左遍历表示猫赢了,遍历这颗树,当然从根节点出发,不需要遍历左子树。

算法懒得写了!

#include<stdio.h>

int c;

void fun(int l,int r,int i,int m,int n)

{

if(i==0) 

{

fun(l,r+1,i+1,m,n);

return;

}

else

{

if(i>m+n) return;

if(l==r) return;

else if(l>=r) return;

if(l==m&&r==n)

{

c++;

return;

}

fun(l,r+1,i+1,m,n);

fun(l+1,r,i+1,m,n);

}

}

 

void main()

{

fun(0,0,0,2,7);

printf("%d",c);

}

原创粉丝点击