CCF模板生成系统

要注意问题中的不能模板递归生成,还有测试中有“ }}”出现在“{{ ”的情况(我之前就是没有考虑到这个得了90)

源代码

#include<iostream>
#include<string>
#include<vector>
#include<map>
#include<stdio.h>
using namespace std;
int m,n;
vector<string> ss;
map<string,string> mm;
int main()
{
    void k(string &ss,int p);
    cin>>m>>n;
    getchar();
    for(int i=0;i<m;i++)
    {
        string s;
        getline(cin,s);
        ss.push_back(s);
    }
    for(int i=0;i<n;i++)
    {
        string a,b;
        cin>>a;
        getchar();
        getline(cin,b);
        b.erase(0,1);
        b.erase(b.size()-1,1);
        mm[a]=b;
    }
    for(int i=0;i<m;i++)
    {
        k(ss[i],ss[i].size());
        cout<<ss[i]<<endl;
    }
    return 0;
}
void k(string &ss,int p)
{
    int pos=ss.rfind("{{ ",p);
    int end=ss.rfind(" }}",p);
    if(pos==string::npos||end==string::npos||end<pos)return;
    string s=ss.substr(pos+3,end-pos-3);
    map<string,string>::iterator it;
    it=mm.find(s);
    if(it==mm.end())
    {
       ss.replace(pos,end-pos+3,"");
    }
    else
    {
        ss.replace(pos,6+s.size(),mm[s]);
    }
    k(ss,pos);
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值