Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
29751 23级逯一鸣 【J】T2 C++ 通过 100 1 MS 360 KB 1141 2024-05-26 17:40:50

Tests(10/10):


#include <algorithm> #include <cstdio> #include <iostream> #include <string> #include <unordered_set> #include <vector> using namespace std; using i64 = long long; unordered_set<int> num; vector<string> curr; inline string join(const vector<string>& arr) { string res; for (const auto& x : arr) res += x; return res; } void add() { vector<string> s(curr); sort(s.begin(), s.end()); do { num.emplace(atoi(join(s).c_str())); } while (next_permutation(s.begin(), s.end())); } void choose(const vector<string>& a, int n, int k, int lst = -1) { if (k <= 0) { add(); return; } else if (lst >= n) return; for (int i = lst + 1; i + k <= n; ++i) { curr.emplace_back(a[i]); choose(a, n, k - 1, i); curr.pop_back(); } } int main() { int n, k; vector<string> a; cin >> n >> k; for (int i = 0; i < n; ++i) { string x; cin >> x; a.emplace_back(x); } choose(a, n, k); cout << num.size() << '\n'; return 0; }


测评信息: