zoukankan      html  css  js  c++  java
  • 移动路线

    描述
    ×桌子上有一个m行n列的方格矩阵,将每个方格用坐标表示,行坐标从下到上依次递增,列坐标从左至右依次递增,左下角方格的坐标为(1,1),则右上角方格的坐标为(m,n)。
    小明是个调皮的孩子,一天他捉来一只蚂蚁,不小心把蚂蚁的右脚弄伤了,于是蚂蚁只能向上或向右移动。小明把这只蚂蚁放在左下角的方格中,蚂蚁从
    左下角的方格中移动到右上角的方格中,每步移动一个方格。蚂蚁始终在方格矩阵内移动,请计算出不同的移动路线的数目。
    对于1行1列的方格矩阵,蚂蚁原地移动,移动路线数为1;对于1行2列(或2行1列)的方格矩阵,蚂蚁只需一次向右(或向上)移动,移动路线数也为1……对于一个2行3列的方格矩阵,如下图所示:

    -------------------
    |(2,1)|(2,2)|(2,3)|
    -------------------
    |(1,1)|(1,2)|(1,3)|
    -------------------

    蚂蚁共有3种移动路线:
    路线1:(1,1) → (1,2) → (1,3) → (2,3)
    路线2:(1,1) → (1,2) → (2,2) → (2,3)
    路线3:(1,1) → (2,1) → (2,2) → (2,3)
    输入
    输入只有一行,包括两个整数m和n(0<m+n<=20),代表方格矩阵的行数和列数,m、n之间用空格隔开
    输出
    输出只有一行,为不同的移动路线的数目。
    样例输入
    2 3
    样例输出
    3

    查看

    思路很容易想

    #include<cstdio>
    #include<cmath>
    #include<iostream>
    #include<algorithm>
    #include<vector>
    #include<string>
    #include<map>
    #include<cstring>
    #define DEBUG(x) cout << #x << " = " << x << endl
    using namespace std;
    const int MAXN=25;
    int M,N;
    ///从i,j到m,n的路线数
    int Ways[MAXN][MAXN];
    int main()
    {
    //    freopen("in.txt","r",stdin);
        scanf("%d %d",&M,&N);
        Ways[M][N]=1;
        for(int i=M-1;i>=1;i--)Ways[i][N]=1;
        for(int i=N-1;i>=1;i--)Ways[M][i]=1;
        for(int i=M-1;i>=1;i--){
            for(int j=N-1;j>=1;j--){
                Ways[i][j]=Ways[i+1][j]+Ways[i][j+1];
            }
        }
        printf("%d
    ",Ways[1][1]);
        return 0;
    }
  • 相关阅读:
    今天到了1000分了,庆祝一下
    中文vs2008安装 mvc 1
    火车采集器使用感受
    存储过程中的case用法
    作为开发者的反思
    什么是程序员的优秀品质?
    遇到了乱码的问题(转载)
    利用网址导航站点推广
    国内优秀网址导航站总结 (转载)
    Unable to read local eventlog错误解决(转载)
  • 原文地址:https://www.cnblogs.com/MalcolmMeng/p/9177377.html
Copyright © 2011-2022 走看看