zoukankan      html  css  js  c++  java
  • 剪绳子游戏

    重申一下这个游戏的规则吧:

      

    给你一根长度为n的绳子,请把绳子剪成m段(m、n都是整数,n>1并且m>1),每段绳子的长度记为k[0],k[1],...,k[m]。请问k[0]xk[1]x...xk[m]可能的最大乘积是多少?
    例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到的最大乘积是18。

    说实话,这个是一个规律游戏,我们只需要通过程序用语言解释出来就OK了,自己想了好长时间还是没有发现这个规律,最后参考大佬们的代码明白了。

    public class demo {
        /*
        当target为2时结果为1
        为3时结果为2
        为4时2*2
        为5时2*3
        为6时3*3
        为7时2*2*3或者4*3
        为8时2*3*3
        为9时3*3*3
        为10时2*2*3*3或者4*3*3
        为11时2*3*3*3
        为12时3*3*3*3
        为13时2*2*3*3*3或者4*3*3*3
       规律:
        当一个数大于3时,呈现的规律为每3个为一个周期,周期中的3个结果都是有规律的。
    */ public static long c(long target){ if (target==1){ return 0; }else if (target == 2){ return 1; }else if (target == 3){ return 2; } //第几层 long x = target%3; //几个周期 long y = target/3; if (x==1){ return (long) (2*2*Math.pow(3,y-1)); }else if (x==2){ return (long)(2*Math.pow(3,y)); }else { return (long)(Math.pow(3,y-1)); } } public static void main(String[] args) { System.out.println(c(8)); } }
  • 相关阅读:
    数组排序与二维数组
    函数-头文件//Calculator.h
    [hiho1586]Minimum
    后缀数组模板整理
    [spoj694&spoj705]New Distinct Substrings(后缀数组)
    [poj3261]Milk Patterns(后缀数组)
    [poj3450]Corporate Identity(后缀数组)
    [poj1236]Network of Schools(targin缩点SCC)
    [hdu2087]剪花布条(KMP)
    [hdu2594]Simpsons’ Hidden Talents
  • 原文地址:https://www.cnblogs.com/shiji7/p/11950985.html
Copyright © 2011-2022 走看看