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

    2718:移动路线

    总时间限制: 
    1000ms
     
    内存限制: 
    65536kB
    描述
    ×桌子上有一个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<=20),代表方格矩阵的行数和列数,m、n之间用空格隔开
    输出
    输出只有一行,为不同的移动路线的数目。
    样例输入
    
    2 3
    
    样例输出
    
    3
    
    
    棋盘型DP:递推即可
    
    
    代码:
    
    
    
    
    #include< cstdio >
    
    
    #include< iostream >
    
    
    using namespace std;
    
    
    int step[21][21];
    
    
    int main()
    
    
    {
    
    
      int n,m;
    
    
     scanf("%d%d",&m,&n);
    
    
         for(int i=1;i<=m;++i)
    
    
        step[i][1]=1;
    
    
        for(int i=1;i<=n;++i)
    
    
        step[1][i]=1;
    
    
        for(int i=2;i<=m;++i)
    
    
          for(int j=2;j<=n;++j)
    
    
       step[i][j]=step[i-1][j]+step[i][j-1];
    
    
     printf("%d",step[m][n]);
    
    
     return 0;
    
    
    }
    
  • 相关阅读:
    网页抓取
    基本数据结构
    小节
    顺序统计量
    线性时间排序
    快速排序
    堆排序 Heapsort
    大数运算
    趣味题,文本中洞的数量
    nginx config配置
  • 原文地址:https://www.cnblogs.com/c1299401227/p/5370678.html
Copyright © 2011-2022 走看看