CCF markDown

求改错啊,怎么改就是60分,测了很多组样例,就是不对,救命啊

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

vector<string> v_s;

void solve_h(string &s)
{
    int hx = 0, i;
    int len = s.size();
    for(i = 0; i < len; i++){
        if(s[i] == '#')
            hx++;
        if(s[i] != ' ' && s[i] != '#')
            break;
    }
    s = s.substr(i, len-i+1);
   // if(hx >= 6) hx = 6;
    char hsum = hx + '0';
    s = "<h1>" + s + "</h1>";
    len = s.size();
    s[2] = hsum, s[len-2] = hsum;
}
string solve_in(string s1)
{
    string s = "";
    int len = s1.size();
    bool flag = false;
    for(int i = 0; i < len; i++){
        if(s1[i] == '_'){
            if(!flag){
                s = s + "<em>";
                flag = true;
            }
            else{
                s = s + "</em>";
                flag = false;
            }
        }
        else if(s1[i] == '['){
            string ss = "";
            for(int j = i; j < len; j++){
                if(s1[j] == '('){
                   bool flags = false;
                    for(int k = j+1; s1[k] != ')'; k++){
                        if(s1[k] == '_'){
                            if(!flags){
                                flags = true;
                                ss = ss + "<em>";
                            }
                            else{
                                flags = false;
                                ss = ss + "</em>";
                            }
                        }
                        else{
                            ss = ss + s1[k];
                        }
                    }

                    break;
                   }
            }
            s = s + "<a href=\"" + ss + "\">";
        }
        else if(s1[i] == ']'){
            s = s + "</a>";
            for(i; i < len; i++){
                if(s1[i] == ')')
                    break;
            }
            //i++;
        }
        else{
            s = s + s1[i];
           // cout << "@@@ " << s1[i] << endl;
        }
    }
    //cout <<"@@@ " <<  s << endl;
    return s;
}

int main()
{
    string s;
    bool flagp = false, flagh = false, flagu = false;
    while(getline(cin, s)){
        if(s == "" ){
//            if(s == "!!!")
//                break;
            if(flagp){
                int vsize = v_s.size();
                v_s[vsize-1] = v_s[vsize-1] + "</p>";
                flagp = false;
            }
            if(flagu){
                int vsize = v_s.size();
                v_s[vsize-1] = v_s[vsize-1] + "</ul>";
                flagu = false;
            }
            continue;
        }
        s = solve_in(s);
        if(s[0] == '#'){
            flagh = true;
            solve_h(s);
            v_s.push_back(s);
        }
        else if(s[0] == '*'){
            //cout <<"!!!" <<s << endl;
            int len = s.size(), i;
            for(i = 0; i < len; i++){
                if(s[i] != ' ' && s[i] != '*')
                    break;
            }
            s = s.substr(i, len-i);
            cout << s << endl;
            if(!flagu){
                flagu = true;
                string ss = "<ul>";
                v_s.push_back(ss);
                ss = "<li>" + s + "</li>";
                s = ss;
            }
            else{
                s = "<li>" + s + "</li>";
            }
            v_s.push_back(s);
        }
        else{
            if(!flagp){
                s = "<p>" + s;
                v_s.push_back(s);
                flagp = true;
            }
            else
                v_s.push_back(s);
        }
    }
    if(flagp){
       int vsize = v_s.size();
       v_s[vsize-1] = v_s[vsize-1] + "</p>";
    }
    if(flagu){
        int vsize = v_s.size();
        v_s[vsize-1] = v_s[vsize-1] + "</ul>";
    }
    for(int i = 0; i < v_s.size(); i++)
        cout << v_s[i] << endl;
    return 0;
}

/*
# Hello
## Hello!
######## hello

* 11
* 22
* 33
* 44


Hello, world!_aaa_bbb
[good,](morning) [aaa](_bbb_)
good,morning [aaa_aa_bbb_ccc_](bbb)
!!!
*/
/*
#         heading
## sub-heading

pdefe dfe _dfefe_
busdfe sdfe fe

efewfew

buiuhkj dewf:

*     sfwef
* wefe
* fewfe

A [sdsd](ssf_ hjkhj _kjjk _odj_).

# Heading


## Sub-heading

Paragraphs are separated
by a blank line.


text attributes _italic_.

Bullet list:

* _apples_
* oranges
* pears

A [link](http://example.com).
*/

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值