zoukankan      html  css  js  c++  java
  • 903. Valid Permutations for DI Sequence

    We are given S, a length n string of characters from the set {'D', 'I'}. (These letters stand for "decreasing" and "increasing".)

    valid permutation is a permutation P[0], P[1], ..., P[n] of integers {0, 1, ..., n}, such that for all i:

    • If S[i] == 'D', then P[i] > P[i+1], and;
    • If S[i] == 'I', then P[i] < P[i+1].

    How many valid permutations are there?  Since the answer may be large, return your answer modulo 10^9 + 7.

    Example 1:

    Input: "DID"
    Output: 5
    Explanation: 
    The 5 valid permutations of (0, 1, 2, 3) are:
    (1, 0, 3, 2)
    (2, 0, 3, 1)
    (2, 1, 3, 0)
    (3, 0, 2, 1)
    (3, 1, 2, 0)
    

    Note:

    1. 1 <= S.length <= 200
    2. S consists only of characters from the set {'D', 'I'}.

    Approach #1: DP.[C++]

    class Solution {
    public:
        int numPermsDISequence(string S) {
            int n = S.length(), mod = 1e9 + 7;
            vector<vector<int>> dp(n+1, vector<int>(n+1));
            for (int j = 0; j <= n; ++j) dp[0][j] = 1;
            for (int i = 0; i < n; ++i) {
                if (S[i] == 'I') {
                    for (int j = 0, cur = 0; j < n - i; ++j) 
                        dp[i+1][j] = cur = (cur + dp[i][j]) % mod;
                } else {
                    for (int j = n - i - 1, cur = 0; j >= 0; --j) 
                        dp[i+1][j] = cur = (cur + dp[i][j+1]) % mod;
                } 
            }
            return dp[n][0];
        }
    };
    

      

    Analysis:

    I feel this code is right, but I can't express why.

    https://leetcode.com/problems/valid-permutations-for-di-sequence/discuss/168278/C%2B%2BJavaPython-DP-Solution-O(N2)

    永远渴望,大智若愚(stay hungry, stay foolish)
  • 相关阅读:
    elastalert邮件告警
    Kubernetes(k8s)集群安装
    supervisord进程管理
    Flask Ansible自动化平台搭建(持续更新)
    pandas数据导出Execl
    docker运行dubbo-admin
    Activemq集群搭建
    Zabbix自动发现java进程
    selenium爬取百度图片
    Beta 冲刺(1/7)
  • 原文地址:https://www.cnblogs.com/h-hkai/p/10340249.html
Copyright © 2011-2022 走看看