2010顶嵌杯第一题--24点运算
来源:互联网 发布:香港国际网络电视台 编辑:程序博客网 时间:2024/05/18 10:41
痛恨,当时这道题没有做出来,没有安下心认真分析。当时作出了第二道题,迷宫问题,因为以前见过类似的(具体缺乏锻炼,调试了老半天)。
题目如下:
-----------------------------------
Description
Input
Output
Sample Input
5 5 1 5
Sample Output
5*(5-(1/5))
---------------------------------------
认真分析,不改变位置顺序,当时被这个搞死了。但是后来发现这是个很好的限制条件,其实是简单了,而不是复杂了。
分析如下:
1)五种操作顺序
给定4个正整数,a b c d .他们的操作顺序共有六种A(3,1)
//1((a b) c) d
//2(a b) (c d)
//3(a (b c)) d
//4a ((b c) d)
//5a (b (c d))
//*6**(a b) (c d) 第六种和第二种其实同样的,不管是先算前两个 还是先算后两个 结果是一样的。
2)每个操作中都含有4中操作运算(+、-、*、/)
根据这个思想写的伪代码:
每中操作类型 根据 所操作的间隔顺序不同,传递进不同的参数
可以将MathChoice抽象出来,它包含4中操作运算。
根据i值不同调用不同的函数。(这里宏定义也遇到过问题,原来把操作的值返回如return add(a,b); 因为宏定义不能返回值,
所以改了,设了一个全局变量 static float tempSum=0;来记录各个操作后的结果)
间隔的顺序是1,2,3
#define interBefore(a) a-1 //当前间隔的前一个数
#define interAfter(a) a //当前间隔后一个数
3)输出 封装
因为各个操作类型都定义好了,而每个操作类型的()的位置是可以定的,变的只是操作符的类型.
因此需要记录每个间隔的操作符类型。在得到正确结果的时候将当前的操作符记录下来。+ - * /
以下是具体的源代码:
删除了伪代码注释 ,排名又往前靠了,看来代码的大小也很影响ranklist的。也就是如果有些变量名可以短的话尽量短。
- 2010顶嵌杯第一题--24点运算
- 第一题 点排序
- 24点快速运算
- 24点运算
- 24点运算
- 24点运算
- 检测点6.1第一题
- 第一题“最大”点集
- 第一题 赋值运算符的重载
- 【C语言探索之旅】 第一部分第五课:运算那点事
- C语言探索之旅 | 第一部分第五课:运算那点事
- 201604 CCF 第一题 折点计数
- CCF第一题--折点计数
- 华为OJ题目:24点运算
- 【华为OJ】【107-24点运算】
- [华为OJ--C++]107-24点运算
- 华为oj中级 24点运算
- 华为OJ——24点运算
- 获取OS、IP、浏览器
- Dreamweaver中的标签
- Django 中如何使用静态文件
- Java的沙箱机制原理入门
- 抖动的导航效果--Jquery
- 2010顶嵌杯第一题--24点运算
- interface vs abstract class
- spring's lazy-init & abstract
- BLAS库学习
- linux2.6进程管理
- 固定表头效果--Css
- border-collapse:collapse;
- 图片悬浮后出现焦点框效果----Css
- vc++6.0贪吃蛇