zoukankan      html  css  js  c++  java
  • 蓝桥杯 摆动序列 dfs

    问题描述
      如果一个序列满足下面的性质,我们就将它称为摆动序列:
      1. 序列中的所有数都是不大于k的正整数;
      2. 序列中至少有两个数。
      3. 序列中的数两两不相等;
      4. 如果第i – 1个数比第i – 2个数大,则第i个数比第i – 2个数小;如果第i – 1个数比第i – 2个数小,则第i个数比第i – 2个数大。
      比如,当k = 3时,有下面几个这样的序列:
      1 2
      1 3
      2 1
      2 1 3
      2 3
      2 3 1
      3 1
      3 2
      一共有8种,给定k,请求出满足上面要求的序列的个数。
    输入格式
      输入包含了一个整数k。(k<=20)
    输出格式
      输出一个整数,表示满足要求的序列个数。
    样例输入
    3
    样例输出
    8
    转载自https://blog.csdn.net/xiaoliangxiansheng/article/details/21475569
     1 #include <bits/stdc++.h>
     2 using namespace std;
     3 int a[25];
     4 bool vis[25];
     5 int n;
     6 int ans;
     7 bool check(int num, int k){
     8     if (k == 1 || k == 2) {
     9         return true;
    10     }
    11     if (a[k - 1] > a[k - 2] && num < a[k - 2]) {
    12         return true;
    13     }
    14     if (a[k - 1] < a[k - 2] && num > a[k - 2]) {
    15         return true;
    16     }
    17     return false;
    18 }
    19 void dfs(int id) {
    20     if (id > n) {
    21         return;
    22     }
    23     for (int i = 1; i <= n; i++) {
    24         if (!vis[i] && check(i, id)) {
    25             vis[i] = true;
    26             a[id] = i;
    27             if (id >= 2) {
    28                 ans++;
    29                 /*for(int i=1;i<=cur;i++){
    30                     cout<<a[i]<<" ";
    31                 }
    32                 cout<<endl;
    33                 */
    34             }
    35             dfs(id + 1);
    36             vis[i] = false;
    37         }
    38     } 
    39 }
    40 int main() {
    41     cin >> n;
    42     dfs(1);
    43     cout << ans << endl;
    44     return 0;
    45 } 
  • 相关阅读:
    打造基于CentOS7的xfce最简工作环境
    Linux下C程序的编辑,编译和运行以及调试
    修正 XE6 TListView 上方 SearchBok 右边的清除钮显示
    TabControl 显示彩色的图示 (XE6 Firemonkey)
    TSwitch 中文简繁显示支持(XE6 Android)
    改变 TMemo 的背景颜色 (Firemonkey)
    修正 XE5 Android 键盘三个问题
    Delphi 收藏
    展示 Popup 的使用方法
    ListView 下拉更新 (支持 Android)
  • 原文地址:https://www.cnblogs.com/fx1998/p/12700141.html
Copyright © 2011-2022 走看看