不用string用C语言的char,无法得出结果,有char的解法吗
查看原帖
不用string用C语言的char,无法得出结果,有char的解法吗
266440
PetterZhukov楼主2020/8/25 22:12

这是大佬的题解

#include<bits/stdc++.h>//万能头棒棒哒
using namespace std;
string yunqian(){
    int k;//压缩的次数
    char ch;//输入的字符
    string s="",str="";//s是最终答案,str是被压缩的字串,别忘了初始化
    /*注意:ch,s,str应该定义在函数内部,才能在每次递归中初始化,否则会导致一堆RE,可能还有几个MLE,总之没法AC,我就因为这个错了好几回*/
	while(cin>>ch){//不断输入字符
		if(ch=='['){//如果找到了被压缩的字串
			cin>>k;//输入压缩次数
			str=yunqian();//递归调用
			while(k--){
				s+=str;//把解压后的字串复制k次后添加到原来的字符串上
			}
		}
		else if(ch==']'){//如果找到了压缩的字串的末尾
			return s;//结束这一层递归并返回已经被解压的字串
		}
		else{//如果没有被压缩
			s+=ch;//直接在最后添上这个字符。
		}
	}
}
int main(){
	cout<<yunqian();
	return 0;//完结撒花~
}

我按他的写了一个 ,想着用char[]行不行,果不其然不行

//傻乎乎的模仿
#include <stdio.h>
#include <string.h>

char* Ans()
{
    int k;
    char ch;
    char ans[20000]="\0",str[200]="\0";
    char *ansx=ans;
    while(scanf("%c",&ch)!=EOF)
    {
        if(ch=='\n') break;
        if(ch=='[')
        {
            scanf("%d",&k);
            strcpy(str,Ans());
            while(k--)
                strcat(ans,str);
        }
        else if(ch==']')
            return ansx;
        else
        {
            char temp[3]={ch,'\0'};
            strcat(ans,temp);
        }

    }

}

char*函数只传递地址,,,,,不可能传的动,那用char有什么解法吗,除了动态创建删除空间,,(我觉得动态分配应该可以)

2020/8/25 22:12
加载中...