一,概述
二十四点是一种益智游戏,它能在游戏中锻炼人们的心算,它往往要求人们将四个数字进行加减乘除(允许使用括号)求得二十四。然后将四个数字的计算公式表示出来。
二,中缀表达式求解
最直接的方法就是采用穷举法,游戏中可用的运算符只有四种,四个数字每个只能使用一次。
1)不考虑括号情况
4个数全排列:4!=24种
需要三个运算符,且运算符可以重复:4*4*4=64
总计:1536
2)考虑括号(是个难点)
自己想的加括号:四个数有五种加括号方式: (AB)CD 、AB(CD)、A(BC)D 、A((BC)D) 、(AB)(CD)、A(B(CD))
错误点:这里添加括号的时候,需要把四个数都看成相乘。需要加两个括号来列举比较直观
AB(CD) = (AB)(CD)
改正后:((AB)C)D
、(AB)(CD)、 (A(BC))D 、A((BC)D) 、A(B(CD))
四个运算数五种不同加括号方式的由来。这是一个经典的Catalan数问题。
这个经典Catalan数问题在组合数学教材上都能找到。原题目是:n 个数相乘, 不改变它们的位置, 只用括号表示不同的相乘顺序,令g(n)表示这种条件下构成不同乘积的方法数,令C(n)表示第n个Catalan数。则有g(n)=C(n-1)。前几个Catalan数为:C(0)=1,C(1)=1,C(2)=2,C(3)=5,C(4)=14,C(5)=42。所以g(4)=C(3)=5。
根据Catalan数的计算公式,有g(4)=g(1)g(3)+g(2)g(2)+g(3)g(1)。
Catalan数的计算公式也同时提供了构造答案的方法。对于4个数,中间有3个位置,可以在任何一个位置一分为二,被分开的两半各自的加括号方案再拼凑起来就得到一种4个数的加括号方案:
一个数时:(A),一种
两个数:g(2)=g(1)g(1),所以是(A)(B)=(AB),一种
三个数:g(3)=g(1)g(2)+g(2)g(1)=(A)(BC)+(AB)(C),两种
四个数:g(4)=g(1)g(3)+g(2)g(2)+g(3)g(1)
=(A)[(B)(CD)+(BC)(D)]+(AB)(CD)+[(A)(BC)+(AB)(C)](D)
=A(B(CD)) + A((BC)D) + (AB)(CD) + (A(BC))D + ((AB)C)D
共有五种。于是写代码枚举这五种加括号的方式即可。这种方法只是一种能得到正确答案的方法,扩展性和效率都极差。而且生成的表达式中也有冗余括号。
三,分支限界法求解
分享到:
相关推荐
微软编程之美2022初试题目收集 本篇资源摘要信息来自微软编程之美2022初试题目收集.pdf,涵盖多个编程题目,包括 Beauty of Programming 2013 初赛第一场题目列表、相似字符串、仙剑 5 前传之璇光殿等。 Beauty ...
《游戏编程入门》是Michael Morrison撰写的一本专为初学者设计的游戏编程教程。该书旨在引导读者进入游戏开发的世界,通过一系列章节逐步介绍游戏编程的基础概念和技术。在压缩包文件中,我们可以看到多个章节的代码...
03 几何之美.zipscratch2.0 3.0编程项目源文件源码经典游戏案例素材源代码03 几何之美.zipscratch2.0 3.0编程项目源文件源码经典游戏案例素材源代码03 几何之美.zipscratch2.0 3.0编程项目源文件源码经典游戏案例...
在计算机游戏的发展史上,Windows游戏编程大师技巧的演变是一个关键部分。60年代,随着第一台大型主机的出现,游戏的雏形开始形成。Core Wars是Unix系统上最早的游戏之一,它为后来的游戏开发奠定了基础。70年代,...
《游戏编程模式》是Robert Nystrom所著的一本关于游戏开发的专业书籍,它深入探讨了在游戏开发中广泛使用的各种设计模式和技术。这本书旨在帮助游戏开发者提高代码的可读性、可维护性和复用性,使游戏项目更加高效、...
C++游戏编程入门教程 (美)道森(Dawson,M.) 著,徐刚,薛雷,于健 译 人民邮电出版社 本书从C++语言和游戏编程最基础的内容开始,讲述如何用C++语言进行游戏编程。全书共分10章,内容由浅入深,全面覆盖了C++语言的...
《游戏编程精粹8》是游戏开发领域的一本权威著作,由(美)Adam Lake编著并配有插图,本书汇集了众多游戏开发者的经验与智慧,旨在为读者提供游戏编程的深度见解和实用技巧。书中的内容涵盖了游戏开发的多个重要方面...
《少儿Scratch编程项目:赛车小游戏1204》 Scratch是一款由麻省理工学院(MIT)媒体实验室“终身幼儿园”团队开发的图形化编程工具,专为儿童设计,旨在激发他们对计算机科学的兴趣。这个名为“赛车小游戏1204”的...
童程童美是中国知名的少儿编程教育品牌,他们倡导用Scratch等工具来启发孩子的编程思维。这个素材包可能就是童程童美的教学资源之一,包含了许多游戏案例,这些案例可以作为教学示例,引导孩子们如何构建一个完整的...
《游戏编程精粹6》是游戏开发领域的一本经典著作,由(美)Mike Dickheiser等人编纂,集合了众多游戏开发专家的经验与智慧。这本书涵盖了游戏开发的多个核心领域,包括图形渲染、物理模拟、人工智能、网络编程以及性能...
在《游戏编程精粹7》中,你可以找到以下关键知识点: 1. **图形渲染**:游戏画面的呈现离不开图形渲染技术,包括3D模型构建、光照、纹理映射、阴影投射等。书中的章节可能涉及现代图形API如DirectX和OpenGL的应用,...
这款游戏基于经典的数学游戏24点,旨在通过编程实现,让学生或开发者熟悉和掌握VB(Visual Basic)编程语言,以及数据结构的应用。 在VB 24点游戏设计中,首先涉及的关键知识点是VB编程基础。VB是一种流行的事件...
《DirectX 11游戏编程入门》是由Allen Sherrod和Wendy Jones合著的一本经典教程,旨在帮助初学者掌握DirectX 11技术在游戏开发中的应用。DirectX 11是微软推出的一个图形应用程序接口(API),广泛用于Windows平台的...
Java游戏高级编程.(美)David.Wallace.Croft
《游戏编程精粹1》是Mark DeLoura编著的一本经典游戏开发图书,它汇集了多位业界专家的经验和智慧,为读者提供了丰富的游戏编程知识。这本书是游戏开发者的宝贵资源,涵盖了从基础概念到高级技术的广泛内容,旨在...
这本书是3D游戏编程入门的经典之作,因其清晰易懂的讲解而受到广泛赞誉。 在3D游戏开发中,DirectX是一个至关重要的工具集,由微软开发,主要用于Windows平台的多媒体应用,尤其是游戏开发。DirectX包含了多个组件...
3D游戏编程大师技巧(PDF) (美)André LaMothe 文件分成了3部分,这个是第一部分
3D游戏编程大师技巧(PDF) (美)André LaMothe 文件分成了3部分,这个是第二部分
游戏编程精粹5 原书名: Game Programming Gems 5 原出版社: Charles River Media 作者: (美)Kim Pallister [作译者介绍] 译者: 孟宪武 出版社:人民邮电出版社 ISBN:9787115163950 上架时间:2007-8-31 ...
本文将围绕“Android小游戏(美女)”这个主题,详细讲解相关知识点,包括Android游戏开发基础、源码结构分析以及无广告改良版的实现。 一、Android游戏开发基础 1. Android SDK:所有Android应用开发都基于Android...