洛谷 P8032 题解
作者:互联网
题目传送门
题意:
输入一个字符串数组,根据以下方式模拟:
-
数组的开头和结尾分别用大括号 { 和 } 表示。
-
每组大括号内有若干个(可能为 $0$)用逗号分隔开来的元素(每个数组的最后一个元素后面没有逗号)。
-
每个元素可以是一个单词(由小写字母组成的字符串)或一个数组。
并且还要满足以下码风:
-
遇到单词或大括号时另起一行。
-
逗号应直接放置于一个数组元素的后面。
-
每遇到一个 {,增加 $2$ 个空格的缩进。
-
每遇到一个 },减少 $2$ 个空格的缩进。
思路:
设置循环变量 $i$ 和用于记录缩进数量的变量 $cnt$。
然后根据题意模拟即可。
代码:
#include <iostream>
#include <string>
#include <cstdio>
using namespace std;
string s;
int i,cnt; //cnt用于记录缩进的数量
int main(){
cin>>s;
for(i=0;i<s.length();i++){
if(s[i]=='{'){
for(int k=1;k<=cnt;k++) cout<<" ";
cout<<"{"<<endl;
cnt+=2;
}
else if(s[i]=='}'){
for(int k=1;k<=cnt-2;k++) cout<<" ";
cout<<"}";
if(s[i+1]!=',') cout<<endl;
cnt-=2;
}
else{
if(s[i]!=',') for(int k=1;k<=cnt;k++) cout<<" ";
while(s[i]!=',' && s[i]!='}'){
cout<<s[i];
i++;
}
if(s[i]==',') cout<<","<<endl;
else cout<<endl,i--;
}
}
return 0;
}
本篇题解特别感谢@wangyuhan2010dalao的指点
标签:缩进,洛谷,P8032,题解,cnt,逗号,数组,include,大括号 来源: https://www.cnblogs.com/liu-black/p/p8032-tijie.html