大家好,欢迎来到IT知识分享网。
【问题描述】
一块的nxn游戏板上填充着整数,每个方格上为一个非负整数。目标是沿着从左上角到右下角的任何合法路径行进,方格中的整数决定离开该位置的距离有多大,所有步骤必须向右或向下。请注意,0是一个死胡同。
图1所示的4 x 4板,其中实心圆标识起始位置,虚线圆标识目标,图2显示了从开始到目标的三个路径。
图一
图二
【输入形式】
输入开始是一个正整数n(4<=n<=30), 接下来的n行,每行输入n个0~9中的一个数字,数字间用空格隔开。
【输出形式】
输出一个整数,表示从左上角到右下角的路径数。
【样例输入】
4
2 3 3 1
1 2 1 3
1 2 3 1
3 1 1 0
【样例输出】
3
【样例说明】提示:建议使用递归实现
【评分标准】
#include<iostream>
using namespace std;
int sum=0;//计录路径数
void pascal(int x,int y,int a[][30],int n){
if(x>n-1 || y>n-1)
return;
if(a[x][y]==0 &&((x<n-1) || (y<n-1)) )//到了边界返回。
return;
if(x==n-1 && y==n-1) //到了终点返回。
{
sum++;
return;
}
pascal(x+a[x][y],y,a,n); //向下走
pascal(x,y+a[x][y],a,n); //向右走
}
int main(){
int n;
cin>>n;
int a[n][30];
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
cin>>a[i][j];
}
}
pascal(0,0,a,n);
cout<<sum;
}
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/27315.html