早教吧 育儿知识 作业答案 考试题库 百科 知识分享

GZOI2011DAY1第二题:运算符游戏二、运算符游戏(50分,每个数据10分)输入文件:operator.in输出文件:operator.out问题描述小云和小吉很喜欢玩数学游戏,特别是运算符游戏。小云负责

题目详情
GZOI2011_DAY1 第二题:运算符游戏
二、运算符游戏 (50分 ,每个数据10分)
输入文件:operator.in
输出文件:operator.out
【问题描述】
小云和小吉很喜欢玩数学游戏,特别是运算符游戏。小云负责写一条等式,该式子由整数组成,还有“+”、“-”、“*”三个运算符,还有一个“=”,该式子遵守先乘除后加减的方式进行运算。然后他把式子里面的运算符去掉,只剩下一列数字。然后,他告诉小吉从左到右拿走了什么运算符(包括“=”),让小吉填上去。
一开始,小云给了一条简单的式子, 123*2-51=195,去掉运算符后数列为 123251195,然后他告诉小吉去掉的运算符是:*-= ,小吉很快就做出来了。然后,小云写了一个几十位数字的式子,这次小吉犯难了,你能帮助他吗?

【输入格式】
输入有两行
第一行为由0-9组成的数字序列,长度不超过50位
第二行为运算符序列,长度不超过6个运算符。

注意:
运算符序列里面,有且只有一个“=”,其余的符号为“+”、“-”、“*”中的一个;
输入的数据保证有解。
【输出格式】
输出只有一行,就是原来的等式。

注意:
1、输入的数据保证至少有一个解,如果存在多个解,只需要输出一个即可;
2、输出的式子中,运算符均为二元运算符,就是说“+”、“-”不会作为正数、负数的标记;
3、输出的式子中的各个整数,前面不会有多余的“0”

【输入样例】
123251195
*-=
【输出样例】
123*2-51=195
PASCAL语言的程序,解题思路均可。求教
▼优质解答
答案和解析
输入的数据要保证至少有一个解, 这就是说输入数据之后就要对其进行求解。 问题的重点也是在于求解的过程。
下面介绍求解此题的思路:
这是一个穷举问题,就像国际象棋的算法差不多,对每一种可能进行完全考虑。运算符 <=6,就从这路入手,顺序是逆序。
1、最简单的情况是: … = … (只有一个符号“=”),这时要求输入的数据很有特色,位数为偶数,将“=”放置于中间位置就可以得到答案;
2、假定除了“=”还有其他运算符。
等于号“=”先放在最后一位数(然后逐渐往前推移)。
运算符就只能是1-5个,接下来假设运算符是1个(然后逐渐增加),
选择三种运算符中的某一个逐个进行比对,看是否能满足要求,
满足要求:返回
不满足: 继续
当运算符个数不止一个时,运算符需要进行组合与排列,情况需要一一完全列出。需要很大的细心和耐心。
祝你好运!!!