表达式题目求助
题面给定一个含有 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
@高山 可以试试这个,每个思路都试一试吧
还要问? 高山 发表于 2022-12-4 19:38
还要问?
每个思路都看看吧 我不会,但是我有个思路
首先要搞会4则混合运算的方法,这个我不会,哈哈哈哈
思路如下:
1,用一个数组b来存储表达式s的正确运算顺序,如b = { 2, 1 }
2,用b和a做比较,如果a == 1, 而 b != 1,说明i这个位置需要加(), 修改b = 1 , 如此遍历数组a,当a==b时,达到要求 两手空空儿 发表于 2022-12-4 19:47
我不会,但是我有个思路
首先要搞会4则混合运算的方法,这个我不会,哈哈哈哈
思路如下:
这个问题白问了,之后再看看吧{:10_266:} 我找个时间联系下
页:
[1]