为了账号安全,请及时绑定邮箱和手机立即绑定

一个算法问题,,

一个算法问题,,

天涯尽头无女友 2018-11-22 14:14:15
如果有很多(这种规律) 的数字 1  4  9  16 25 问题:1+4+16 =21怎么通过21得到  1,4,16 这个几个数,,,这个算法如何实现
查看完整描述

3 回答

?
九州编程

TA贡献1785条经验 获得超4个赞

先从1开始枚举i,当i^2大于n(你读入的数)时跳出并记录i-1,比如读入21时i=5就跳出了,记录一个4,然后重复这个操作直到1

代码如下,

void Function(int k) {
    if (k == 1) {
        printf("1\n");
        return;
    }

    int i;
    for (i = 1; i * i <= k; i++);
    i--;
    Function(k - i * i);
    printf("%d\n", i * i);
}

例如输入21就会输出:

1

4

16


查看完整回答
反对 回复 2018-11-25
?
jeck猫

TA贡献1909条经验 获得超7个赞

你这个是要循环,还是要得到那个数啊


查看完整回答
反对 回复 2018-11-25
?
梦里花落0921

TA贡献1772条经验 获得超5个赞

计算机最强大的功能就是穷举


查看完整回答
反对 回复 2018-11-25
  • 3 回答
  • 0 关注
  • 678 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信