zoukankan      html  css  js  c++  java
  • 网格走法

    有一个X*Y的网格,小团要在此网格上从左上角到右下角,只能走格点且只能向右或向下走。请设计一个算法,计算小团有多少种走法。给定两个正整数int x,int y,请返回小团的走法数目。

    /*动态规划:
         对于x*Y网格,dp[i][j]表示(i,j)位置一共有多少种走法,
         由于只能向左和向右走,所以第一列和第一行所有位置的走法都是1,即dp[i][0]=1,dp[0][j]=1(0=<i<=x,0<=j<=y),
         对于其他位置,走法应该等于其左边格点的走法和其上面格点的走法之和,dp[i][j]=dp[i-1][j]+dp[i][j-1],
         画个图比较容易理解。
    */  
    /*例如题目中的输入3 2 其实就是一个4*3的格子,至于为什么是4*3是因为小团是从左上角走到右下角,即小团
    并不在这个格子里,这个是整个问题理解的关键。3*2网络的各个点的走法数目如下:
    10 6 3 1
    4  3 2 1
    1  1 1 1
    3*2的走法就是格子中4*3的那个格子的走法数目
    */
    #include<iostream>
    using namespace std;
    
    int main()
    {
    	int x, y;
    	cin >> x >> y;
    	int array[11][11];
    	for (int i = 0; i <=x; i++)
    	{
    		array[i][0] = 1;
    	}
    	for (int i = 0; i <=y; i++)
    	{
    		array[0][i] = 1;
    	}
    	for(int i=1;i<=x;i++)
    		for (int j = 1; j <=y; j++)
    		{
    			array[i][j] = array[i - 1][j] + array[i][j - 1];
    		}
    	cout << array[x][y] << endl;//这里的数组下标是从0开始的,所以array[x][y],就是x和y都增加了1
    	return 0;
    }
    

      

  • 相关阅读:
    QQ家园熄灭不了解决方法
    那时我们还年轻[转]
    QQ游戏图标熄灭大全
    FlashDevelop快捷键
    linux 全局搜索某一文件并将文件内容并进行替换的命令
    navigate 10.0.5 regist cn
    线程、socket、stl 以及并发设计
    drupal真不错
    网卡问题解决思路linux版
    socket错误:Program received signal SIGPIPE, Broken pipe
  • 原文地址:https://www.cnblogs.com/wuyepeng/p/9595299.html
Copyright © 2011-2022 走看看