求查错
查看原帖
求查错
334586
159号程序员楼主2020/8/23 12:12

我现在瞄准了h1,h2,i的判断,本地AC,洛谷20pts+1RE,求查错:

#include <bits/stdc++.h>
using namespace std;

int main()
{
    string s;
    string c;
    while(getline(cin, s))
    {
        bool lh1, lh2, rh1, rh2, li1, ri1; //判断是否匹配
        lh1 = lh2 = rh1 = rh2 = li1 = ri1 = 0; //初始化为0
        int len = s.length();
        int j = 0;
        for(int i = 0; i < len; i++) //先判断是否合法
        {
            if(s[i] == '[' && s[i + 1] == 'h' && s[i + 2] == '1' && s[i + 3] == ']') 
            {
                lh1 = 1; //当看到[h1]字样时,lh1=1
            }
            if(s[i] == '[' && s[i + 1] == 'i' && s[i + 2] == ']') 
            {
                li1 = 1; //当看到[i]字样时,li1=1
            }
            if(s[i] == '[' && s[i + 1] == 'h' && s[i + 2] == '2' && s[i + 3] == ']') 
            {
                lh2 = 1; //当看到[h2]字样时,lh2=1
            }
            if(s[i] == '[' && s[i + 1] == '/' && s[i + 2] == 'h' && s[i + 3] == '1' && s[i + 4] == ']')
            {
                rh1 = 1; //当看到[/h1]字样时,rh1=1
            }
            if(s[i] == '[' && s[i + 1] == '/' && s[i + 2] == 'i' && s[i + 3] == ']') 
            {
                ri1 = 1; //当看到[/i]字样时,ri1=1
            }
            if(s[i] == '[' && s[i + 1] == '/' && s[i + 2] == 'h' && s[i + 3] == '2' && s[i + 4] == ']')
            {
                rh2 = 1; //当看到[/h2]字样时,rh2=1
            }
        }
        //printf("\n%d %d %d %d\n", lh1, lh2, rh1, rh2);
        if(lh1 && !rh1 || !lh1 && rh1 || lh2 && !rh2 || !lh2 && rh2 || li1 && !ri1 || !li1 && ri1) 
        {
            printf("%s", "Unclosed");
            printf("%s", " Mark");
            return 0;
        }
        for(int i = 0; i < len; i++) //再输出
        {
            if(s[i] == '[' && s[i + 1] == 'h' && s[i + 2] == '1' && s[i + 3] == ']') 
            {
                printf("%c ", '#');
                for(int j = i + 4; s[j] != '['; j++)
                {
                    printf("%c", s[j]);
                }
            }
            if(s[i] == '[' && s[i + 1] == 'h' && s[i + 2] == '2' && s[i + 3] == ']') 
            {
                printf("%s", "## ");
                for(int j = i + 4; s[j] != '['; j++)
                {
                    printf("%c", s[j]);
                }
            }
            if(s[i] == '[' && s[i + 1] == 'i' && s[i + 2] == ']') 
            {
                printf("%c", '*');
                for(int j = i + 3; s[j] != '['; j++)
                {
                    printf("%c", s[j]);
                }
            }
            if(s[i] == '[' && s[i + 1] == '/' && s[i + 2] == 'h' && s[i + 3] == '1' && s[i + 4] == ']')
            {
                printf(" %c", '#');
                for(int j = i + 5; s[j] != '[' && j < len; j++)
                {
                    printf("%c", s[j]);
                }
            }
            if(s[i] == '[' && s[i + 1] == '/' && s[i + 2] == 'h' && s[i + 3] == '2' && s[i + 4] == ']')
            {
                printf("%s", " ##");
                for(int j = i + 5; s[j] != '[' && j < len; j++)
                {
                    printf("%c", s[j]);
                }
            }
            if(s[i] == '[' && s[i + 1] == '/' && s[i + 2] == 'i' && s[i + 3] == ']') 
            {
                printf("%c", '*');
                for(int j = i + 4; s[j] != '[' && j < len; j++)
                {
                    printf("%c", s[j]);
                }
            }
        }
        printf("\n");
    }
    return 0;
}
2020/8/23 12:12
加载中...