嘘~ 正在从服务器偷取页面 . . .

CCF模板生成系统---字符串都有替身了,木大木大木大!


CCF-201509-3

下面都不会了

让我们先来看一下题目

1
2

解题思路

1.替换的字符用map存储;
2.提取字符用到了substr;
3.替换用到了replace,find等函数;

注意点

1.substr的第一个参数是提取字符串的首字母下标i,第二个参数是字符串长度,一般位尾减首+1,题目中next为尾+1;
2.find可以不加第二个参数,加了就是从第二参数下标开始找;
3.replace,个人感觉这个函数吊炸天。。。不多说;
4.getline前要用ignore或者getchar干掉换行。

代码

#include<iostream>
#include<cstring>
#include<map>
using namespace std;
const int maxn=100;
string str[maxn];
map<string,string> stand;
int main(){ 
    int m,n;
    cin>>m>>n;
    cin.ignore(); 
    for(int i=0;i<m;i++){
      getline(cin,str[i]); 
    }
    while(n--){
      string a,b;
      cin>>a;
      getline(cin,b);
      stand[a]=b.substr(2,b.length()-3);
    }
    for(int i=0;i<m;i++){
      int prev=0,next;
      while(1){
          string temp;
          if((prev=str[i].find("{{ ",prev))==str[i].npos) break;
   	   if((next=str[i].find(" }}",prev))==str[i].npos) break;
          temp=str[i].substr(prev+3,next-prev-3);
          str[i].replace(str[i].begin()+prev,str[i].begin()+next+3,stand.count(temp)?stand[temp]:"");
          prev+=stand.count(temp)?stand[temp].length():0;  
       }  
    }
    for(int i=0;i<m;i++){
      cout<<str[i]<<endl;
    }
    return 0;
}

结果


版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 梦想成为假面骑士的司祎同学 !
赏
评论
评论
 上一篇
CCF画图---一个平平无奇的搜索题bfs CCF画图---一个平平无奇的搜索题bfs
CCF-201512-3 我们先来看一下题目吧 解题思路就是一个很平常的搜索题1.我们要完成画线和填充,把他简化为两个函数再一一击破 注意点:1.x1不一定大于x2,y1不一定大于y2,所以还要处理一下输入数据2.输出格式还要y其实相当于i
2020-09-05
下一篇 
CCF节日---注意当月第一天超过目标星期的情况 CCF节日---注意当月第一天超过目标星期的情况
CCF-201503-3 让我们先来看一下题目 解题思路思路很简单,算日子。。。注意:1.闰年的判定2.输出格式3.把一些代码包装成函数有利于找bug和清晰思路 代码#include<iostream> #include<iom
2020-09-05
  目录