pascal的旅行

pascal的旅行【问题描述】一块的nxn游戏板上填充着整数,每个方格上为一个非负整数。目标是沿着从左上角到右下角的任何合法路径行进,方格中的整数决定离开该位置的距离有多大,所有步骤必须向右或向下。请注意,0是一个死胡同。图1所示的4×4板,其中实心圆标识起始位置,虚线圆标识目标,图2显示了从开始到目标的三个路径。图一图二【输入形式】输入开始是一个正整数n(4<=n<=30),接_一个n×n个方格的游戏板中,每个方格中有一个非负整数。游戏的目标是从游戏板的左

大家好,欢迎来到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

(0)

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信