hdu1274

来源:互联网 发布:mac怎么放大图标 编辑:程序博客网 时间:2024/06/05 15:30

                   采纳此人代码http://m.blog.csdn.net/blog/MetalSeed/7953175,不过他的外围for循环应该写成ith<=s.size(),少了一个“=”,否则虽然可以A过,但是像2ab这样的输入得不到aab,只能得aa.

                   代码:

                 

#include <iostream> #include <cctype> #include <cstring> #include <string> using namespace std;  string s; int fun(int ith) {      int k,e;      char c;      for(c=s[ith++];ith<=s.size()&&c!=')';c=s[ith++])//递归结束的条件是字符串结束或遇到右括号       {           for(k=0;isdigit(c);c=s[ith++])               k=k*10+c-'0';           if(!k) k=1;           if(c=='('){               while(k--)                   e=fun(ith);               ith=e;//重置ith的值,到下层递归结束的位置       }      else      {          while(k--)              putchar(c);      }  }  if(c==')') return ith;//返回本次读到结尾的位置  } int main() {      int i,j,k,T;      cin>>T;      while(T--)      {           s.clear();           cin>>s;           fun(0);//进入递归            cout<<endl;      }      return 0; }

          

                 

0 0
原创粉丝点击