1 条题解
-
0
C++ :
#include <bits/stdc++.h> using namespace std; //路径总数和路径 int a[100][100],t=0; //两种移动规则 int x[2]={1,0},y[2]={0,1}; int n,m; //输出结果 void print(int s) { t++; cout<<t<<":"; for(int i=1;i<s;i++){ cout<<a[i][1]<<","<<a[i][2]<<"->"; } cout<<n<<","<<m<<endl; } //递归回溯 void search(int k) { //往2个方向走 for (int i=0;i<2;i++){ //判断马不越界 if (a[k-1][1]+x[i]>=0&&a[k-1][1]+x[i]<=n &&a[k-1][2]+y[i]>=0&&a[k-1][2]+y[i]<=m){ //保存当前卒的位置 a[k][1]=a[k-1][1]+x[i]; a[k][2]=a[k-1][2]+y[i]; if (a[k][1]==n&&a[k][2]==m){ print(k); }else{ //搜索下一步 search(k+1); } } } } int main(){ cin>>n>>m; a[1][1]=1; a[1][2]=1; //从坐标(0,0)开始往右跳第二步 search(2); }
- 1
信息
- ID
- 2280
- 时间
- 1000ms
- 内存
- 16MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者