开发者社区> 问答> 正文

遇到一个集合问题,求解答

有一个 1~n(1<=n<=100)的集合,现在可以让你在集合中选择任意多个数去减去一个正整数 x(x 是任意数 ),问最少需要操作多少次可以使这个集合中的数都变为0 ?输入一个数 n(1<=100),表示集合中的数据数量输出最少的操作数.

展开
收起
游客4skzfvnrxrzbi 2021-12-23 17:06:35 397 0
1 条回答
写回答
取消 提交回答
  • 思路如下:二分法的核心在于,每次操作都让问题的复杂度减小为原来的一半。若有一个 1~n 的集合,可以让集合中大于n/2的数同时减去n/2,减完后发现所有的数会变成一个1~n/2的集合,也就是一次操作后整个问题的复杂度变为了原来的一半。继续同样的操作,直至问题的复杂度为 0,统计这个过程中二分操作的次数即可得出最少的操作数。 因此输入:2 输出:2

    2021-12-23 18:54:04
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载