zoukankan      html  css  js  c++  java
  • 【2011.10.29模拟】24点游戏题解

    题目描述
    24点游戏是一个非常有意思的游戏,很流行,玩法很简单:给你4张牌,每张牌上有数字(其中A代表1,J代表11,Q代表12,K代表13),你可以利用数学中的加、减、乘、除以及括号想办法得到24,例如:
    ((A* K)-J) * Q等价于((1 * 13)-11) * 12=24
    加减乘不用多说了,但除法必须满足能整除才能除!这样有一些是得不到24点的,所以这里只要求求出不超过24的最大值。

    输入
    输入第一行N(1<=N<=5)表示有N组测试数据。每组测试数据输入4行,每行一个整数(1到13)表示牌值。

    输出
    每组测试数据输出一个整数,表示所能得到的最大的不超过24的值。

    样例输入
    3
    3
    3
    3
    3
    1
    1
    1
    1
    12
    5
    13
    1

    样例输出
    24
    4
    21

    题解:

    题目主要讲的是给n组数据,求他们小于等于24的最大组合(就是单纯的二十四点)。
    搞清楚题目大意,我们就把问题简化一下:

    法1:

    全排列+挨个枚举。
    O(44 * 53 *5)
    实际上可能更长,所以这不是重点。

    法2:

    把这个二十四点转换成四个数和并成一数,每次合并把两个数合成一个数,和并分五种来枚举:
    设合并的两数为i,j。

    1. i+j
    2. i-j
    3. j-i(别忘了这个)
    4. i*j
    5. i%j=0就i/j j%i=0就j/i(注意除数不能等于0)

    合并的方法:

    i=1~3
    j=i~4
    if(a[i]和a[j]有任意一个以前合并过就不进行合并)
    

    合并3次后就判断,因为合并方法,所以最后的答案一定在a[1] (可以自己想想)。
    然后就好了。

    Python数据分析与挖掘

  • 相关阅读:
    管理~资源组织运作
    科学与艺术区别
    概念思维
    拨开文字表象,关注背后事实
    论信息部门与业务部门的关系
    再论信息系统
    linux命令行快捷键记录
    hadoop,帮我解了部分惑的文章
    hadoop运行测试命令遇到的问题
    日志分析及几个小技巧
  • 原文地址:https://www.cnblogs.com/2020-zhy-jzoj/p/13159869.html
Copyright © 2011-2022 走看看