码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2018-04-28 01:30:57      阅读:209      评论:0      收藏:0      [点我收藏+]

标签:for   href   bit   can   geo   using   pre   c++   scan   

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(找规律)

标签:for   href   bit   can   geo   using   pre   c++   scan   

原文地址:https://www.cnblogs.com/kindleheart/p/8965165.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!