问题描述:有一个方格图形,假设从第a行第b列开始,每步只能往左、右、上三个方向走,只能走n步,问有多少种走法。
输入:三个整数a,b,n(1<=a,b<100,n<=30)
输出:每种走法(各占一行)和走法总数(单独占一行)左、右、上三种走法分别用L R U表示。
这个路径是我加的,原题只要求走法数,现在走法数没错,但路径就是整不出来,自己在纸上画了一下大概知道错在哪了,但不知道怎么改。
本人最近刚入门,大佬勿喷……
#include <cstdio>
#include <algorithm>
#define M 100
using namespace std;
int vis[M][M];
long long int cnt=0;
void way(int i,int j,int n){
if(vis[i][j])
return;
if(n==0){
printf("\n");
cnt++;
return;
}
vis[i][j]=1;
if(!vis[i][j-1]&&j>=2){
printf("L");
way(i,j-1,n-1);
}
if(!vis[i][j+1]);{
printf("R");
way(i,j+1,n-1);
}
if(!vis[i-1][j]&&i>=2){
printf("U");
way(i-1,j,n-1);
}
vis[i][j]=0;
}
int main(){
int a,b,n; //a,b:起始行列号,n:允许走的步数
for(int i=1;i<=M;i++)
fill(vis[i],vis[i]+M,0);
scanf("%d%d%d",&a,&b,&n);
way(a,b,n);
printf("%I64d",cnt);
return 0;
}