有一个 1~n(1<=n<=100)的集合,现在可以让你在集合中选择任意多个数去减去一个正整数 x(x 是任意数 ),问最少需要操作多少次可以使这个集合中的数都变为0 ?输入一个数 n(1<=100),表示集合中的数据数量输出最少的操作数.
思路如下:二分法的核心在于,每次操作都让问题的复杂度减小为原来的一半。若有一个 1~n 的集合,可以让集合中大于n/2的数同时减去n/2,减完后发现所有的数会变成一个1~n/2的集合,也就是一次操作后整个问题的复杂度变为了原来的一半。继续同样的操作,直至问题的复杂度为 0,统计这个过程中二分操作的次数即可得出最少的操作数。 因此输入:2 输出:2
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。