原题链接:孤独的骑士
解题思路: 用递归遍历骑士所有可能的情况;
注意事项: 国际象棋64个格子,8行8列分布(哈哈,自行脑补),注意递归终止条件 ;
参考代码:
#include <iostream>
#include <algorithm>
using namespace std;
//国际象棋64个格子,8行8列分布
int xx,yy;//定义初始横纵坐标
int check(int x,int y)
{
if(x>8||x<1||y>8||y<1)//超出棋盘边界,终止递归(返回0,对结果没有影响)
return 0;
if(x!=xx&&y!=yy)//棋子不在初始位置,且不超出棋盘边界,返回这种可能
return 1;
return check(x+2,y+1)+check(x+2,y-1)+check(x-2,y+1)+check(x-2,y-1)+check(x+1,y+2)+check(x+1,y-2)+check(x-1,y+2)+check(x-1,y-2);
//骑士每次都有8种选择(左,右)*(2格,1格)*(上,下)即 2*2*2=8 ;
}
int main()
{
int n;
int vertical;
char horizontal;
cin>>n;
while(n--)
{
cin>>horizontal>>vertical;
xx=horizontal-'a'+1;//把字母转化为数字,方便统一操作(1代表a,2代表b.......)
yy=vertical;
cout<<check(xx,yy)<<endl;
}
return 0;
} //dongdong0.0分
0 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复