gpt4 book ai didi

c - 给定 n,求加起来得到 n 的最大数

转载 作者:太空狗 更新时间:2023-10-29 14:51:50 25 4
gpt4 key购买 nike

oracle面试问的问题,比如我输入的是6,那么

  • 5+1=6 回答:2
  • 4+2=6 回答:2
  • 3+2+1=6 答案:3

所以,最终答案应该是 3。(即需要 3,2,1 才能得到总和 6)

注意:不允许重复数字(即 1+1+1+1+1+1=6)

我用递归解决了,但面试官不满意。动态规划是否可行?

最佳答案

x个数的最小和是

minimum sum

所以只要找到满足不等式的x:

inequality formula

代码如下:

#include <stdio.h>

int main() {
int n;
scanf("%d", &n);
int x = 1;
while ((x+1)*x/2 <= n) x++;
x--; // now (x+1)*x/2 > n , so x is too large
printf("%d\n", x);
return 0;
}

如果 n 很大,您可以使用二分查找。

关于c - 给定 n,求加起来得到 n 的最大数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21656650/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com