P8032 题解

SOL:

这道题就是一道纯字符串模拟题,我们可以把输入存到一个字符串内,然后用一个 for 循环逐位输出。这道题并不难,它的难点是考虑的东西很多,所以我们可能需要尝试很多遍才能通过。

展示代码之前先给大家介绍一个好用的库函数,就是 setw(sum),它的用处就是输出 sum 个空格,这个函数可以减轻很多时间复杂度。我们可以把它需要的空格数量存到一个 int 数组里,然后需要输出的时候用这个函数输出就可以了。

AC code

由于我写的比较迷惑,所以还是写上注释吧。

#include<bits/stdc++.h>
using namespace std;
string s;
int se=1;//这个就是我之前介绍过的输出空格的变量。
int main() {
    cin>>s;
    for(int i=0; i<s.size(); i++) {
        if(s[i]=='{') {
            if(s[i+1]!='}')cout<<setw(se)<<"{"<<endl,se+=2,cout<<setw(se);//这里是为了避免两个括号之间有一个回车的尴尬状况。
            else {
                cout<<setw(se)<<"{",se+=2,cout<<setw(se);
            }
        } else if(s[i]=='}') {
            if(s[i-1]!=',') { //这里是为了避免括号和逗号之间有空格。
                se-=2;
                cout<<endl<<setw(se)<<"}";
            } else {
                if(s[i-1]!='{') { //这个也是为了避免两个括号直接有一个回车
                    cout<<endl<<setw(se)<<"}",se-=2;
                } else {
                    cout<<setw(se)<<"}",se-=2;
                }
            }
        } else if(s[i]==',')cout<<","<<endl<<setw(se); //这里还有另外一种做法,但是代码比较多,所以我就不写了。
        else cout<<s[i];//这个是正常的情况。
    }
    return 0;//完美的结束。
}

 


高清无注释的代码:

#include<bits/stdc++.h>
using namespace std;
#define N 1000005
int haed[N],v[N],nxt[N],idx=1,n,m;
void add(int a,int b){
    v[idx]=b;
    nxt[idx]=haed[a];
    head[a]=idx++;
}
int main(){
    memset(head,-1,sizeof(head));
    cin>>n>>m;
    for(int i=1;i<=m;i++){
        cin>>a>>b;
        add(a,b);
    }
    for(int i=haed[x];i!=1;i=nxt[i]){
        int y=v[i];
    }
    return 0;
}

 

posted @ 2022-01-22 21:45  ju__ruo  阅读(83)  评论(0)    收藏  举报