时间限制: 1 s    空间限制: 128000 KB    题目等级 : 黄金 Gold
题目描述 Description

计算乘法时,我们可以添加括号,来改变相乘的顺序,比如计算X1, X2, X3, X4, …, XN的积,可以

(X1(X2(X3(X4(...(XN-1*XN)...)))))

:::

:::

(((...(((X1*X2)X3)X4)...)XN-1)XN)

你的任务是编程求出所有这样的添括号的方案。

输入描述 Input Description

输入文件第一行是一个数n(1<=n<=10),表示有n个变量,之后N行每行一个变量的名字。

输出描述 Output Description

输出所有的添加括号的方案。注意:单个字符不要加括号,两个字符相乘中间要有乘号。

样例输入 Sample Input

4

North

South

East

West

样例输出 Sample Output

(North(South(East*West)))

(North((South*East)West))

((North*South)(East*West))

((North(South*East))West)

(((North*South)East)West)

 #include<iostream>
#include<cstring>
#include<cstdio>
#include<vector> using namespace std;
vector<string> dfs(string *ss,int begin,int end)
{
vector<string> ret;
if(begin>end) return ret;
if(begin==end)
{
ret.push_back(ss[begin]);
return ret;
}
if(begin+==end)
{
string s='('+ss[begin]+'*'+ss[end]+')';//最中间的合并
ret.push_back(s);
return ret;
}
int size1,size2;
for(int i=begin;i<end;i++)
{
vector<string> s1=dfs(ss,begin,i);
vector<string> s2=dfs(ss,i+,end);
size1=s1.size();size2=s2.size();
for(int j=;j<size1;j++)
{
for(int k=;k<size2;k++)
{
string s='('+s1[j]+s2[k]+')';// 注意题目中说这里是没有乘号的 后续的合并
ret.push_back(s);
}
}
}
return ret;
}
int main()
{
string ss[];
int n;
scanf("%d",&n);
for(int i=;i<=n;i++)
cin>>ss[i];
vector<string> ans=dfs(ss,,n);
int size=ans.size();
for(int i=;i<size;i++)
cout<<ans[i]<<endl;
return ;
}

最新文章

  1. 《R in Action》读书笔记(3) 数据变换
  2. jQuery动画效果animate和scrollTop结合使用实例
  3. SQLSERVER2008新增的审核/审计功能
  4. 打开Excel的报错,提示:不能使用对象链接和嵌入
  5. 弹窗的封装(css,js) 和弹窗的例子
  6. Unity下载文件一(www协程下载)
  7. uC/OS-II源码分析
  8. mac ping ip地址
  9. NAT的全然分析及其UDP穿透的全然解决方式
  10. yum 命令提示语法错误
  11. jquery easyui tree绑定静态数据的方法
  12. dependency injection via inversion of control
  13. openGL研究钞四 : 关于颜色, 尺寸, 虚线, 多边形逆转, 空洞, 使用位图
  14. [MFC美化] Skin++使用详解-使用方法及注意事项
  15. 利用JavaScript来切换样式表
  16. poj_3281Dining(网络流+拆点)
  17. Python 有序字典(OrderedDict)与 普通字典(dict)
  18. 原创:R包制作--windows
  19. findbugs 安装及使用
  20. Silverlight中图片显示

热门文章

  1. AJPFX关于Set接口学习笔记及总结
  2. 杨辉三角python的最佳实现方式,牛的不能再牛了
  3. Win2D 入门教程 VB 中文版 - 防止内存泄漏
  4. (转)使用Spring注解方式管理事务与传播行为详解
  5. 细说PHP-5.3.4变量的引用赋值
  6. app自动化配置信息
  7. c++ cpp和hpp
  8. python读取绝对路径的三种方式
  9. 在window下搭建即时即用的hyperledger fabric 的环境
  10. 使用 Pytorch 实现 skip-gram 的 word2vec