【问题标题】:Find number of paths in grid with certain restrictions在具有一定限制的网格中查找路径数
【发布时间】:2015-09-21 14:54:35
【问题描述】:

给定一个 n 行 m 列的矩形网格。行从下到上编号为 1 到 n,列从左到右编号为 1 到 m。

您还会在表单(行、列)中获得 k 个特殊字段。对于每个 i,其中 0

您必须遵守一条规则。您只能进行直线向上或向右的移动。也就是说,从每个字段(行、列),只能移动到字段(行+1、列)或字段(行、列+1)。

输出一个由 k + 1 个元素组成的数组。第 i 个元素(索引为 0)必须是恰好包含 i 个特殊字段的不同路径的数量。因为,答案可能太大,以 1000007 为模输出。

输入: 第一行包含三个空格分隔的整数,n、m 和 k。接下来的 k 行,每行包含两个空格分隔的整数,一个特殊字段的坐标。

输出: k + 1 个空格分隔的整数,问题的答案。

约束: 1

【问题讨论】:

    标签: algorithm dynamic-programming


    【解决方案1】:

    这是一个简单的 DP:

    初始化:

    T[i][0][k] = 0
    T[0][j][k] = 0
    

    如果 grid[1][1] 不是特殊的:

    T[1][1][k!=0] = 0
    T[1][1][0] = 1
    

    否则:

    T[1][1][k!=1] = 0
    T[1][1][1] = 1
    

    散装:

    如果grid[i][j] 不是特殊的:

    T[i][j][k] = (T[i-1][j][k] + T[i][j-1][k]) % 1000007
    

    否则:

    T[i][j][0] = 0
    T[i][j][k>0] = (T[i-1][j][k-1] + T[i][j-1][k-1]) % 1000007
    

    答案:

    T[n][m][k], for every possible k.
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-12-23
      • 1970-01-01
      • 1970-01-01
      • 2016-09-27
      • 2016-02-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多