算法
Jack_Potter
这个作者很懒,什么都没留下…
展开
-
贪心算法——输入任意一个正整数N,将其分成多个互不相同的整数,和为N,乘积最大
今天在学校群里有人问到这个问题: 输入任意一个正整数N,将其分成多个互不相同的整数,和为N,乘积最大。写出C/C++代码。 贪心策略:要使乘积做大,尽可能地将指定的n(n>4)拆分成从2开始的连续的自然数的和,如果最后有剩余的数,将这个剩余的数在优先考虑后面项的情况下平均分给前面的各项。 例:n=10,先拆分为:10=2+3+4+1,最后一项为1,比4小,将其分配给前面的一项,得到10=2+转载 2013-11-22 22:01:09 · 10034 阅读 · 4 评论 -
昨天去搜狗笔试,最后一道编程题
一个long a[N][N]二维数组,query(X1,Y1,X2,Y2)的意思是求以a[X1][Y1]为左下角,a[X2][Y2]为右上角的矩形里面所有元素的最大公约数,算法的空间复杂度不能大于a[N][N],时间复杂度尽量小,现有大量的输入X1,Y1,X2,Y2,求他们的最大公约数。给出两个函数名Inti(a[N][N]),query(X1,Y1,X2,Y2),让去写这两个函数的代码。原创 2013-11-24 11:58:43 · 1206 阅读 · 5 评论