洛谷 P8032 题解
题目传送门
题意:
输入一个字符串数组,根据以下方式模拟:
-
数组的开头和结尾分别用大括号 { 和 } 表示。
-
每组大括号内有若干个(可能为 )用逗号分隔开来的元素(每个数组的最后一个元素后面没有逗号)。
-
每个元素可以是一个单词(由小写字母组成的字符串)或一个数组。
并且还要满足以下码风:
-
遇到单词或大括号时另起一行。
-
逗号应直接放置于一个数组元素的后面。
-
每遇到一个 {,增加 个空格的缩进。
-
每遇到一个 },减少 个空格的缩进。
思路:
设置循环变量 和用于记录缩进数量的变量 。
然后根据题意模拟即可。
代码:
#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的指点
本文来自博客园,作者:Black--Panda,转载请注明原文链接:https://www.cnblogs.com/liu-black/p/p8032-tijie.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异