nyoj-0469-擅长排列的小明 II(找规律)

Posted kindleheart

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了nyoj-0469-擅长排列的小明 II(找规律)相关的知识,希望对你有一定的参考价值。

nyoj-0469-擅长排列的小明 II

思路:递推
分析:为了简便起见,我们用Ai代表第i个数字 , 由于A1一直是1,所以A2只能是2或3。假设dp[n]表示1->n这个序列的方案数
           1.当A2=2时,从A2到An的排列(2~n)相当于从A1到An-1的排列(1~n-1)(把每个数字都加1),一共有dp[n-1]种情况。
           2.当A2=3时,A3可能为2,4,5。
               1、当A3=2时,A4一定等于4,此时从A4到An的排列(4~n)相当于从A1到An-3的排列(把每个数字都加3),一共有dp[n-3]种情况。
               2、当A3=4时,不管A4取不取2,都不能形成满足题意的排列,故此种情况不可能发生。
               3、当A3=5时,排列只可能是1 ,3, 5,7,9......10,8,6,4,2,所以一共有1种情况。
           3综上所述,dp[n]=dp[n-3]+dp[n-1]+1;(n>3)

代码:

#include<bits/stdc++.h>
using namespace std;
int n, ans;
int dp[60];
int main() {
    dp[1] = 1; dp[2] = 1; dp[3] = 2;
    for(int i = 4; i <= 55; i++) 
        dp[i] = dp[i-1] + dp[i-3] + 1;
    while(scanf("%d", &n) == 1) printf("%d\n", dp[n]);
    return 0;     
}

 

以上是关于nyoj-0469-擅长排列的小明 II(找规律)的主要内容,如果未能解决你的问题,请参考以下文章

nyist oj 19 擅长排列的小明(dfs搜索+STL)

nyoj 19-擅长排列的小明(STL-next_permutation())

nyoj19_排列

LeetCode 667 优美的排列II[数学] HERODING的LeetCode之路

ACM题目————STL + 全排列

HDU 1207 汉诺塔II (找规律,递推)