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)

原文地址:https://www.cnblogs.com/ruruozhenhao/p/10340249.html

时间: 2024-10-29 18:18:13

903. Valid Permutations for DI Sequence的相关文章

[LeetCode] 903. Valid Permutations for DI Sequence DI序列的有效排列

We are given?S, a length?n?string of characters from the set?{'D', 'I'}. (These letters stand for "decreasing" and "increasing".) A?valid permutation?is a permutation?P[0], P[1], ..., P[n]?of integers?{0, 1, ..., n}, such that for all?

422. Valid Word Square

题目: Given a sequence of words, check whether it forms a valid word square. A sequence of words forms a valid word square if the kth row and column read the exact same string, where 0 ≤ k < max(numRows, numColumns). Note: The number of words given is

LeetCode Valid Word Square

原题链接在这里:https://leetcode.com/problems/valid-word-square/ 题目: Given a sequence of words, check whether it forms a valid word square. A sequence of words forms a valid word square if the kth row and column read the exact same string, where 0 ≤ k < max(

[LeetCode] Valid Word Square 验证单词平方

Given a sequence of words, check whether it forms a valid word square. A sequence of words forms a valid word square if the kth row and column read the exact same string, where 0 ≤k < max(numRows, numColumns). Note: The number of words given is at le

Codeforces Round #631 (Div. 2) B. Dreamoon Likes Permutations(排列组合)

The sequence of mm integers is called the permutation if it contains all integers from 11 to mm exactly once. The number mm is called the length of the permutation. Dreamoon has two permutations p1p1 and p2p2 of non-zero lengths l1l1 and l2l2 . Now D

BestCoder 2nd Anniversary的前两题

Oracle Time Limit: 8000/4000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others)Total Submission(s): 79    Accepted Submission(s): 41 Problem Description There is once a king and queen, rulers of an unnamed city, who have three daughters

hdu 5719 Arrange 贪心

Arrange Time Limit: 8000/4000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others) Problem Description Accidentally, Cupid, god of desire has hurt himself with his own dart and fallen in love with Psyche. This has drawn the fury of his mot

OpenCASCADE General Transformation

OpenCASCADE General Transformation [email protected] Abstract. OpenCASCADE provides a general transformation class: gp_GTrsf. It can be a transformation from gp, an affinity, or you can define your own transformation giving the matrix of transformati

HDU 5719 BestCoder 2nd Anniversary Arrange (DP)

Arrange Time Limit: 8000/4000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others) Total Submission(s): 558    Accepted Submission(s): 198 Problem Description Accidentally, Cupid, god of desire has hurt himself with his own dart and fallen