首页 > 代码库 > 搜索练习SWUST OJ 0324 将军鬼上身了 解题报告

搜索练习SWUST OJ 0324 将军鬼上身了 解题报告

打败万恶的ghost以后,将军准备回寝室告诉大伙儿这个消息,没想到杯具又发生了… 
你知道有种鬼叫“路鬼”吗?让人莫名其妙的迷路,将军就被这种鬼上身了。将军本来要上楼的,但是因为鬼上身,他要不就上一层楼,要不就下一层楼,这个是随机的,他不能控制自己啦! 
假设将军住在第M楼,刚开始将军在K楼,因为体力原因,将军只能上或者下N次楼,假设东6宿舍共有100层。现在问当体力消耗完的时候,将军刚好回到寝室那一层有多少种走法。 

例如:将军住在5楼,将军能上或者下5次楼,现在在1楼, 
那么将军将回不到寝室啦,为什么?我也不知道。
Description
有多组测试数据,每组测试数据共一行,为M,N,K(0 < N < 21,0 < M,K < 101)的值,中间以空格分开,分别代表将军住在第几层,能移动几次和刚开始在第几层;
Input
对应每一组测试数据,输出体力消耗完时将军刚好回到寝室那一层的走法总数
Output
44 5 41
5 5 1
Sample Input
5
0
 
 1 #include<stdio.h> 2 int x=0; 3 void dfs(int m,int n,int step) 4 { 5     if(step==m && n==0) 6     { 7         x++; 8     } 9     if(n==0)10         return;11     if(step+1<101)12         dfs(m,n-1,step+1);13     if(step-1>0)14         dfs(m,n-1,step-1);15 }16 int main()17 {18     int m,n,k;19     x=0;20     while(scanf("%d %d %d",&m,&n,&k)!=EOF)21     {22     dfs(m,n,k);23     printf("%d\n",x);24         x=0;25     }26     return 0;27 }
View Code

 

搜索练习SWUST OJ 0324 将军鬼上身了 解题报告