题解
用二叉搜索肯定是对的但是超时。这里给出一个dp的解法
f[pos][t] = f[pos-1][t-1] + f[pos+1][t-1]
pos: 位置
t: 步数
f[][]: 表示在此位此步存在的解法数
代码
#include <iostream>
#include <cstdio>
#include <cstdlib>
using namespace std;
int n,m,f[32][32];
int main(){
cin>>n>>m;
f[1][0] = 1;
for(int i=1;i<=m;i++){
f[1][i] = f[2][i-1]+f[n][i-1]; // 1,n 位置单独处理
f[n][i] = f[1][i-1]+f[n-1][i-1];
for(int j=2;j<n;j++)
f[j][i] = f[j+1][i-1] + f[j-1][i-1];
}
cout<<f[1][m]<<endl;
return 0;
}