首页 > 代码库 > HDU 1274 展开字符串 (递归+string类)
HDU 1274 展开字符串 (递归+string类)
题目链接:HDU 1274 展开字符串
中文题。
左括号进入DFS函数,右括号return到上一层。注意return回去的是这个一层递归中的括号里的字母串。
AC代码:
#include<stdio.h> #include<iostream> #include<string.h> #include<string> using namespace std; char str[300]; bool vis[300]; int len; string dfs(int pos) { int i,k; int num=0; string ans=""; string temp="",h=""; for(i=pos;i<len;i++) { if(!vis[i]) { vis[i]=true; if(str[i]>='0' && str[i]<='9') { num=num*10+str[i]-'0'; continue; } if(str[i]>='a' && str[i]<='z') { if(num==0) num=1; for(k=0;k<num;k++) temp+=str[i]; num=0; } if(str[i]=='(') { ans+=temp; h=dfs(i+1); if(num==0) num=1; for(k=0;k<num;k++) ans+=h; temp=""; num=0; } if(str[i]==')') { ans+=temp; return ans;//这一层的括号里的字母返回到上一层 } } } ans+=temp; return ans; } int main() { int t,i,j; string out; while(scanf("%d",&t)!=EOF) { while(t--) { memset(vis,false,sizeof vis); scanf("%s",str); len=strlen(str); out=dfs(0); cout<<out<<endl; } } return 0; } /* 100 3(ab) 1(1a2b1(ab)1c) 3(ab2(4ab)) ababa ab3(cd)2e 3((ab)) 3(3(ab)) 3(3(ab)2(cd)) 1a1a 1b */
HDU 1274 展开字符串 (递归+string类)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。