Unique Paths

最开始使用带记录的递归,结果还是超时,然后改成动规打表以后就通过了。使用三层循环,最外层为长或宽的最大值,复杂度为O(n^3)。

    int record[101][101];
    void initialize(){
        int i, j, k;
        for(i = 1; i < 101; i++){
            record[1][i] = 1;
            record[i][1] = 1;
        }
        for(i = 2; i < 101; i++){
            for(j = 2; j <= i; j++){
                for(k = 2; k <= i; k++){
                    record[j][k] = record[j-1][k]+record[j][k-1];
                }
            }
        }
    }
    int uniquePaths(int m, int n) {
        // Start typing your C/C++ solution below
        // DO NOT write int main() function
        initialize();
        return record[m][n];
    }

 

posted on 2013-09-28 20:16  waruzhi  阅读(132)  评论(0编辑  收藏  举报

导航