回 帖 发 新 帖 刷新版面

主题:刚考完,有一题想问一下大家

我在考试中有一题没做出来。
有一道算式:
     [b]1   2   3   4   5   6   7   8 = N[/b]
上算式中的N由键盘给出(1<=N<=100),请在算式的每个空挡内都填入+、-、*、/四种运算符中的任意一个,使结果等于N,而且要求给出所有符合条件的方案,并统计个数。

回复列表 (共18个回复)

沙发

旧贴慢慢翻,有很多方法。

板凳

从左到右还是先乘除后加减

3 楼

按照运算顺序。

4 楼

方法:穷举法
程序模型:循环产生运算符,计算一个算式过程封装为模块,表示符号的数组为参数,依次进行判断计数.
         模块中是:两个数组,一个数组放参加运算的数,一个数组表示符号,一个变量记录位置,对符号数组循环取符号,先取*和/,再取+和-,取出的符号和两边的数运算,算完将两个数组后面的数前移.

不知道是不是复杂点了.

5 楼

要求出所有的算式只好用一个7层循环来解决了.

考试时出这样的题似乎有整人的嫌疑,太费时间

6 楼

哦,老STAA,用一个循环代替七个循环,再分解就是了,
记得以前好像是大头的做法, n \ 7 , n mod 7

7 楼

这是合肥市2007年"讯飞杯"的第三题,难道你没有编出来吗?

8 楼

moz的方法不可行,考试时有一个调试数据很大,像这样是不行的!

9 楼

从左到右还是先乘除后加减?
有没有括号选择?
[url=http://www.programfan.com/club/showpost.asp?id=43620&t=o]先参考一下这一张旧贴[/url]

10 楼

8楼的,我不是告诉你我得了72分吗?就是这道题没做出来,其它的都做出来了。

我来回复

您尚未登录,请登录后再回复。点此登录或注册