Problem Description
在纺织CAD系统开发过程中,经常会遇到纱线排列的问题。
该问题的描述是这样的:常用纱线的品种一般不会超过25种,所以分别可以用小写字母表示不同的纱线,例如:abc表示三根纱线的排列;重复可以用数字和括号表示,例如:2(abc)表示abcabc;1(a)=1a表示a;2ab表示aab;如果括号前面没有表示重复的数字出现,则就可认为是1被省略了,如:cd(abc)=cd1(abc)=cdabc;这种表示方法非常简单紧凑,也易于理解;但是计算机却不能理解。为了使计算机接受,就必须将简单紧凑的表达方式展开。某ACM队接受了此项任务。现在你就是该ACM队的一员,请你把这个程序编写完成。
已知条件:输入的简单紧凑表达方式的长度不超过250个字符;括号前表示重复的数不超过1000;不会出现除了数字、括号、小写字母以外的任何其他字符;不会出现括号不配对等错误的情况(错误处理已由ACM其他队员完成了)。
 
Input
本题有多个测试数据组,第一行输入的就是数据组数N,接着就是N行表达式,表达式是按照前面介绍的意义书写的。
 
Output
输出时含有N行,每行对应一个输入的表达式。
 
Sample Input
2
1(1a2b1(ab)1c)
3(ab2(4ab))
 
Sample Output
abbabc
abaaaabaaaababaaaabaaaababaaaabaaaab
 
 
 
AC代码,仅供参考
 
  #include<iostream>
#include<string>
#include<stack>
using namespace std;
string process(string s)
{
string ans;
stack<char> x;
for(int i=;i<s.size();++i)
{
if(s[i]>=''&&s[i]<=''||s[i]=='(')//是数字或左括号,直接入栈。
x.push(s[i]);
else if(s[i]>='a'&&s[i]<='z')//是字母。
{
if(x.top()<=''&&x.top()>='') //此时栈顶是数字。
{
int num=x.top()-'';
x.pop();
while(num--)
x.push(s[i]);
}
else //此时栈顶是左括号或其他字母。
x.push(s[i]);
}
else if(s[i]==')')//是右括号。
{
string temp;
while(x.top()!='(')
{
temp.insert(temp.begin(),x.top());
x.pop();
}
x.pop(); //弹出左括号。
int num;
if(x.empty()||!(x.top()>=''&&x.top()<=''))//弹出左括号后栈为空,或者栈顶不是数字。
num=;
else
{
num=x.top()-'';//取出栈顶数字。
x.pop();
}
while(num--)
{
for(int j=;j<temp.size();++j)
x.push(temp[j]);
}
}
}
while(!x.empty())
{
ans.insert(ans.begin(),x.top());
x.pop();
}
return ans;
}
int main()
{
int test;
string s;
cin>>test;
while(test--)
{
cin>>s;
cout<<process(s)<<endl;
}
return ;
}

最新文章

  1. kafka主题offset各种需求修改方法
  2. Sql server函数的学习1(系统变量、错误函数、转换函数)
  3. Why sql is called structured query language?1 - 12
  4. Spark:一个高效的分布式计算系统
  5. win7安装virtualbox
  6. thinkphp 3.2视图里添加URL参数 实例
  7. [转]Ionic + AngularJS angular-translate 国际化本地化解决方案
  8. 快速理解Kafka分布式消息队列框架
  9. ECshop中TemplateBeginEditable 和后台编辑讲解
  10. kickstrat
  11. 省市数据递归加载到TreeView
  12. Totime iOS购物APP
  13. sourcetree 跳过首次登录
  14. postfix 指定用户限制指定域名收发
  15. 4.1 C++多态的概念及前提条件
  16. python学习 day12 (3月18日)----(装饰器内置函数)
  17. MBTIles实现
  18. JAVA开发中文乱码的几个解决方案
  19. vue实现前端导出excel表格
  20. 【WPF】RenderTransform和LayoutTransform

热门文章

  1. OOP: One pont of view of OOP与基于算法设计的区别
  2. 【转】iOS学习之Storyboard中的UIScrollView使用自动布局
  3. SOAPUI使用教程-WSDL项目---检查器
  4. VS使用的一些备忘东西
  5. java强制类型转换
  6. Javascript实现页面加载完成后自动刷新一遍清除缓存文件
  7. Android课程---视图组件总结(2)
  8. jQuery $ 第二个参数的用法
  9. ajax跨域通过 Cors跨域资源共享 进行GetPost请求
  10. scala中的Actor