zoukankan      html  css  js  c++  java
  • 一个正整数N,拆成任意个正整数之和,怎样使这些数的乘积最大

    网上看到了如标题所示的题目,就开始想如果用程序来算的话,那么它的算法是怎样的。

    自己想了半天,第一感觉要用递归,

    如先算出

    当 n=1 max=1 

    当 n=2 max=1

    当 n=3 max=2

    。。。

    那么当n=k max=????

    就是没有找出规律出来。 

    后来感觉上是否按照数学上的某些规律来求这个算法。网上搜索之后,发现,还真是。

    网上的答案:

    1的时候是1,2的时候是1,3的时候是2,4的时候是4,5的时候是6
    当n=3k,k>1的时候,最大的积是3^k
    当n=3k+1, k>1的时候,最大的积是3^(k-1)*4
    当n=3k+2, k>1的时候,最大的积是3^k*2 
     
    感想:做程序做多了,很容易会按照程序的思维来考虑问题,这个是思维定式。
       所以我们发散思维,灵活应对,依靠其他的知识来处理某些问题。
     
  • 相关阅读:
    重载
    两数之和
    求二叉树层序遍历
    最小的K的个数
    二分查找
    实现二叉树先序,中序,后序
    判断 链表中是否有环
    设计LRU缓存结构
    排序
    反转链条
  • 原文地址:https://www.cnblogs.com/guoyongrong/p/3598616.html
Copyright © 2011-2022 走看看