Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
111058 | 一只野生穹p | 递增子序列 | C++ | 解答错误 | 33 | 0 MS | 304 KB | 837 | 2023-11-18 09:44:53 |
#include <iostream> #include <algorithm> #include <cstdio> #include <cmath> #include <cstring> using namespace std; const int MAXN = 1e3 + 1e2; int a[MAXN]; int ans[MAXN]; string anss[MAXN]; int len; int x; int n; void dfs(int d) { if (d > n) { if (len >= 2) { x++; for (int i = 1;i <= len;i++) { anss[x] += char(ans[i] + '0'); anss[x] += ' '; } } return ; } for (int i = 0;i <= 1;i++) { if (i == 0) dfs(d + 1); if (i == 1 && a[d] >= ans[len]) { ans[++len] = a[d]; dfs(d + 1); ans[len--] = 0; } } } int main() { scanf("%d", &n); for (int i = 1;i <= n;i++) scanf(" %d", &a[i]); dfs(1); sort(anss + 1, anss + x + 1); for (int i = 1;i <= x;i++) if (!(anss[i] == anss[i - 1])) cout << anss[i] << endl; return 0; }