zoukankan      html  css  js  c++  java
  • 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
    ", dp[n]);
        return 0;     
    }
    作者:kindleheart
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须在文章页面给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    [iOS基础控件
    [iOS 多线程 & 网络
    [iOS 多线程 & 网络
    [iOS 多线程 & 网络
    [iOS 多线程 & 网络
    [iOS 多线程 & 网络
    [iOS 多线程 & 网络
    [iOS 多线程 & 网络
    [iOS 多线程 & 网络
    linux开发脚本自动部署及监控
  • 原文地址:https://www.cnblogs.com/kindleheart/p/8965165.html
Copyright © 2011-2022 走看看