动态规划走街道

//
//  main.cpp
//  动态规划走街道
//
//  Created by liujan on 11/18/14.
//  Copyright (c) 2014 liujan. All rights reserved.
//

/*
 问题描述:一个城市的街道布局如下,从最左下 方走到最右上方,每次只能往上或往右走,一 共有多少种走法?
 分析:街道有11行11列,我们先给每个交叉点定坐标,最左下方 为(0,0),最右上方为(10,10)。 
 不难看出子问题就是: 从(0,0)走到(x,y),每次只能往上或往右走,一共有多 少种走法,将这个走法数记为f(x, y),原问题就是求f(10, 10)。
 1.走到(x,y)有两个方法,一个是从(x-1,y)往右走1步,另 一个是从(x,y-1)往上走1步, 前者有f(x-1, y)种方法, 后者有 f(x, y-1)种方法, 所以:
 f(x, y)=f(x-1, y)+f(x, y-1), 另外当x或y为0的时候, 明显f(x, y)=1,即:
 (1)当 x=0或 y =0时, f(x, y)=1
 (2)当 x>0且 y>0时, f(x, y) = f(x-1,y) + f(x, y-1)
 */
#include <iostream>
using namespace std;
int f[100][100];


int main(int argc, const char * argv[]) {
    int n = 10;
    // insert code here...
    for (int i = 0; i <= n; i++) { //当如果在左边边缘或下边边缘时,只有一种走法
        f[i][0] = 1;
        f[0][i] = 1;
    }
    for (int i = 1; i <= n; i++){
        for (int j = 1; j <= n; j++){
            f[i][j] = f[i-1][j] + f[i][j-1];
        }
    }
    cout << f[n][n] << endl;
    return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值