nyoj-0469-擅长排列的小明 II(找规律)
Posted kindleheart
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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())