解题思路: 用递归遍历骑士所有可能的情况;
注意事项: 国际象棋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; } //dongdong
0.0分
0 人评分
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:578 |
十->二进制转换 (C语言代码)浏览:1291 |
printf基础练习2 (C语言代码)浏览:305 |
C语言训练-排序问题<1> (C语言代码)浏览:599 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:575 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:331 |
C语言程序设计教程(第三版)课后习题10.4 (C语言代码)浏览:879 |
简单的a+b (C语言代码)浏览:572 |
DNA (C语言代码)浏览:390 |
C语言程序设计教程(第三版)课后习题6.2 (C语言代码)浏览:534 |