zhangjinxuan 发表于 2022-12-4 19:00:16

表达式题目求助

题面
给定一个含有 n 个数字且不带括号的一个表达式 s 和一个 1 ~ n - 1 的排列 a,现在你要给这个表达式添加上括号,使表达式第 i 个运算的符号为 ai

输入格式
输入共三行
第一行,一个整数 n
第二行,一个字符串,表示这个表达式
第三行,n - 1个数字,第 i 个数字即为 ai

输出格式
输出仅一行,表示加上括号的表达式

输入样例1
3
1+2*3
1 2
输出样例1
(1+2)*3
样例解释1
如果我们想要第一个运算符(加号)先算,再让第二个运算符(乘号)先算,只能 (1+2)*3 这样去加括号

输入样例2
5
4*5+3/3-2
3 2 4 1
输出样例2
4*(5+3/3-2)
样例解释2
我们若先想要第3个运算符(除号)先算,再让第2个运算符(加号)运算,接着让第4个运算符(减号)运算,最后运算第一个符号(乘号),只能 4*(5+3/3-2) 去加括号,要注意,不能添加多余的括号,也就是说,4*(5+(3/3)-2)这这种答案是错的

数据范围/规定
保证 2 <= n <= 8
保证 a 为 1 ~ n - 1 的排列
保证 s 是一个合法,且没有括号和空格,运算符只有 +-*/ 的表达式
保证 s 中的数字在 -105 ~ 105 之间
保证 s 的长度小于 1000

zhangjinxuan 发表于 2022-12-4 19:36:40

@高山 可以试试这个,每个思路都试一试吧

高山 发表于 2022-12-4 19:38:14

zhangjinxuan 发表于 2022-12-4 19:36
@高山 可以试试这个,每个思路都试一试吧

还要问?

zhangjinxuan 发表于 2022-12-4 19:41:56

高山 发表于 2022-12-4 19:38
还要问?

每个思路都看看吧

两手空空儿 发表于 2022-12-4 19:47:20

我不会,但是我有个思路
首先要搞会4则混合运算的方法,这个我不会,哈哈哈哈
思路如下:
1,用一个数组b来存储表达式s的正确运算顺序,如b = { 2, 1 }
2,用b和a做比较,如果a == 1, 而 b != 1,说明i这个位置需要加(), 修改b = 1 , 如此遍历数组a,当a==b时,达到要求

zhangjinxuan 发表于 2022-12-4 19:50:29

两手空空儿 发表于 2022-12-4 19:47
我不会,但是我有个思路
首先要搞会4则混合运算的方法,这个我不会,哈哈哈哈
思路如下:


这个问题白问了,之后再看看吧{:10_266:}

高山 发表于 2022-12-5 20:27:25

我找个时间联系下
页: [1]
查看完整版本: 表达式题目求助