算法训练9.摆动序列
2018-03-01 07:19
253 查看
#include <iostream> #include <cstring> #include <cstdio> using namespace std; int a[100], c[100]; int n, ans;//序列个数 int fun(int num, int k) { if (k == 1 || k == 2)return 1;//边界条件 if (c[k - 1]>c[k - 2] && num<c[k - 2]) return 1; if (c[k - 1]<c[k - 2] && num>c[k - 2]) return 1; return 0; } void dfs(int x) //x是记录c数组下标 { if (x > n)return;//越界 for (int i = 1; i <= n; i++) { if (!a[i] && fun(i, x))//满足条件(没有使用过且满足摆动条件) { a[i] = 1;//标记为已经用过 c[x] = i;//记录序列 if (x >= 2) { ans++; //4个条件都满足,序列的个数加一 } dfs(x + 1);//继续向下寻找 a[i] = 0;//取消标记 } } } int main() { while (cin >> n) { memset(a, 0, sizeof(a));//数组初始化 memset(c, 0, sizeof(c)); ans = 0; dfs(1); cout << ans << endl; } return 0; }
相关文章推荐
- 算法训练 摆动序列
- 算法训练 摆动序列
- 【蓝桥杯】算法训练 摆动序列
- 蓝桥杯-算法训练-摆动序列
- 算法训练 摆动序列
- 蓝桥杯 算法训练 摆动序列 搜索水题
- 蓝桥杯-算法训练-摆动序列
- 算法训练 摆动序列
- 算法训练 摆动序列
- 蓝桥杯 算法训练 摆动序列
- O(1)解决 算法训练 摆动序列 (ALGO_9)
- 蓝桥杯 算法训练 摆动序列
- 蓝桥杯 算法训练 摆动序列 【排列组合 + DFS】
- 蓝桥杯 算法训练 摆动序列 的三种解法
- 算法训练 摆动序列
- 算法训练 摆动序列
- 蓝桥杯_算法训练_ALGO12_摆动序列
- 算法-蓝桥杯-入门训练 序列求和 (JAVA)
- SVM中的训练算法:序列最小最优化算法SMO的读书笔记
- 蓝桥杯算法训练拦截导弹【最长上升子序列 & 最长非下降子序列nlogn 和 n^2】