Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
145940 李承瀚 邮票面值问题 C++ 通过 100 89 MS 256 KB 876 2024-05-06 13:10:54

Tests(4/4):


#include<iostream> #include<algorithm> #include<vector> #define INF 0x3fffffff using namespace std; int n, k; int sum = -1; int v[40] = { 0 }; int a[40] = { 0 }; int dp[500] = { 0 }; void check() { int i = 1; dp[0] = 0; while (1) { dp[i] = INF; int j = 0; for (; j < k && i >= v[j]; j++) { dp[i] = dp[i] < dp[i - v[j]] + 1 ? dp[i] : dp[i - v[j]] + 1; } if (dp[i] > n) { break; } i++; } if (i - 1 > sum) { sum = i - 1; for (int i = 0; i < k; i++) { a[i] = v[i]; } } } void dfs(int cnt) { if (cnt == k - 1) { check(); return; } for (int i = v[cnt] + 1; i <= v[cnt] * n + 1; i++) { v[cnt + 1] = i; dfs(cnt + 1); } } int main() { cin >> n >> k; v[0] = 1; dfs(0); for (int i = 0; i < k; i++) { printf("%d%c", a[i], i == k - 1 ? '\n' : ' '); } cout << sum << endl; return 0; }


测评信息: