题目,将一个数字拆解成一串各不相同的数字,且需要使这些数字的个数尽可能的多
可以从1往上遍历,同时n-=i,直到n<i,则将剩下的所有数字都加到最后一个数字上
(这道题虽然标签里有dp,但我完全没有感觉我这道题有用dp,就是做)
#include<iostream>
#include<vector>
#include<map>
#include<algorithm>
#include<queue>
#include<string>
#include<string.h>
#include<stack>
#include<unordered_map>
using namespace std;
int arr[1005];
int main() {
int n = 0;
scanf("%d", &n);
int cnt = 0;
for (int i = 1; i <= n; i++) {
arr[i] = i;
n -= i;
cnt++;
}
arr[cnt] += n;
printf("%d\n", cnt);
for (int i = 1; i <= cnt; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}