在半张中国象棋的棋盘上,一只马从左下角跳到右上角,只允许往右跳,不允许往左跳,问能有多少种跳步

用c语言作
一定要用c 语言做,具体的语句也写出来!

可以想到,马往右跳有四种方法:右上,右斜上,左斜下,左下

想一想都能知道了,利用搜索回溯方法:
C++代码:// AC代码
#include<iostream>
using namespace std;
int a[100][100],t=0;
int x[4]={2,1,-1,-2};
int y[4]={1,2,2,1};
int search(int);
int print(int);
int main()
{
a[1][1]=0;
a[1][2]=0;
search(2);
return 0;
}
int search(int i){
for(int j=0;j<=3;j++){
if(a[i-1][1]+x[j]>=0&&a[i-1][1]+x[j]<=4&&a[i-1][2]+y[j]>=0&&a[i-1][2]+y[j]<=8){
a[i][1]=a[i-1][1]+x[j];
a[i][2]=a[i-1][2]+y[j];
if(a[i][1]==4&&a[i][2]==8) print(i);
else search(i+1);
}
}
}
int print(int i){
cout<<++t<<": ";
for(int j=1;j<i;j++) cout<<a[j][1]<<","<<a[j][2]<<"->";
cout<<"4,8\n";
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-12-28
#include<cstdio>
using namespace std;
int map[8][4];
int x,y;
int jump(int x,int y)
{
if(x>8||x<0||y>4||y<0) return 0;
if(x==8&&y==4) return 1;
else
{
return jump(x+1,y+2)+jump(x+2,y+1)+jump(x+2,y-1)+jump(x+1,y-2);
}
}
int main()
{
printf("%d",jump(0,0));
return 0;
}
今天竞赛班刚刚做的。。。本回答被网友采纳
第2个回答  2012-05-10
半张棋盘有很多种,20种左右吧
第3个回答  2012-05-12
3*3*3*3*3*2+3*3*3*3*2=648种
第4个回答  2012-05-19
共37种

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网