递归 / 分治----解密字符串

解密字符串

题目

给你一个表达式,表达式中包括数字,字母以及方括号。在方括号前的数字表示方括号内容的重复次数(方括号内的内容可以是字符串或另一个表达式),请将这个表达式展开成一个字符串。

输入描述
Input
输入只有一行
输入为一串字符
字符串长度小于500。

输入字母包括大小写,数字小于10。

输出描述
Output
表达式展开后的字符串

样本输入
Input example
abc3[a]
样本输出
Output example
abcaaa

解答

#include<stdio.h>
#include<string.h>
void PRINTF(char str[500]){
	int n,marry=1;
	char *head,*rear;
	char STR[500],copystr[500];
	memset(copystr,0,500);
	memset(STR,0,500);
	strcpy(copystr,str);
	head=strchr(copystr,'[');
	if(head==NULL){
    	printf("%s",copystr);
    	return;
	}
	rear=head;
	while(marry){
		rear++;
		if(*rear=='[') marry++;
		else if(*rear==']') marry--;	
	}
	n=*(head-1)-48;	
	*(head-1)='\0';
	*rear='\0';
	rear++;
	strcpy(STR,head+1);
	printf("%s",copystr);
	for(int i=1;i<=n;i++) PRINTF(STR);
	PRINTF(rear);
	return;
}
int main(){
	char str[500];
	scanf("%s",str);
	PRINTF(str);
} 

递归 / 分治----解密字符串

上一篇:CSS 实现自动换行、强制换行、强制不换行的属性


下一篇:BZOJ4042 : [Cerc2014] parades