• 【NOIP2007提高组】字符串展开


    【题外话】这道题纯粹考验耐心,某些经常调程序调到摔键盘的人可以尝试

    【题外话2】除了考耐心以外完全没有什么难点

    【题外话3】也许会稍微恶心一点?

    【题外话4】其实我是在别人军训的时候滚来更博客的简直233333

     题目不贴了,NOIP2007原题什么的,然后就是关于某些小细节的处理,比如以‘-’开头啊,以‘-’结尾啊,还有‘--’啊,还有一种题目中提到的,‘-’两边分别是数字和字母,以及关于填充大写字母的时候数字不变什么的。

     总体来说其实就是一道字符处理模拟题,稍微细心与耐心一点的都可以10minAC

     我已经懒得吐槽自己的代码风格了。

      1 #include <algorithm>
      2 #include <iostream>
      3 #include <fstream>
      4 #include <cstdlib>
      5 #include <cstring>
      6 #include <string>
      7 using namespace std;
      8 ifstream fin("expand.in");
      9 ofstream fout("expand.out");
     10 string old,nw;
     11 int p1=0,p2=0,p3=0;
     12 void zx(int wi);
     13 void fx(int wi);
     14 int main(void)
     15 {
     16  fin>>p1>>p2>>p3;
     17  fin>>old;
     18  for(int i=0;i<old.size();i++)
     19     {
     20      if(old[i]=='-'&&i>=1&&i<old.size()-1)
     21        {
     22         if(old[i-1]=='-'||old[i+1]=='-')
     23           {
     24            nw+=old[i];
     25            continue;
     26           }
     27         if(old[i-1]>=old[i+1])
     28           {
     29            nw+=old[i];
     30            continue;
     31           }
     32         if((old[i-1]>='a'&&old[i-1]<='z')&&(old[i+1]<'a'||old[i+1]>'z'))
     33           {
     34            nw+=old[i];
     35            continue;
     36           }
     37         if((old[i+1]>='a'&&old[i+1]<='z')&&(old[i-1]<'a'||old[i-1]>'z'))
     38           {
     39            nw+=old[i];
     40            continue;
     41           }
     42         if(p3==1)zx(i);
     43         else fx(i);
     44        }
     45      else nw+=old[i];
     46     }
     47  fout<<nw;
     48  return 0;
     49 }
     50 void zx(int wi)
     51 {
     52  char ja;
     53  for(int i=1;i<=(old[wi+1]-old[wi-1])-1;i++)
     54     {
     55      for(int j=1;j<=p2;j++)
     56         {
     57          if(p1==1)
     58            {
     59             ja=old[wi-1]+i;
     60             nw+=ja;
     61            }
     62          if(p1==2&&old[wi+1]>='a'&&old[wi+1]<='z')
     63            {
     64             ja=old[wi-1]+i;
     65             ja-='a';
     66             ja+='A';
     67             nw+=ja;
     68            }
     69          if(p1==2&&(old[wi+1]<'a'||old[wi+1]>'z'))
     70            {
     71       ja=old[wi-1]+i;
     72             nw+=ja;
     73            }
     74          if(p1==3)
     75            {
     76             nw+="*";
     77            }
     78         }
     79     }
     80  return;
     81 }
     82 void fx(int wi)
     83 {
     84  char ja;
     85  for(int i=1;i<=(old[wi+1]-old[wi-1])-1;i++)
     86     {
     87      for(int j=1;j<=p2;j++)
     88         {
     89          if(p1==1)
     90            {
     91             ja=old[wi+1]-i;
     92             nw+=ja;
     93            }
     94          if(p1==2&&old[wi+1]>='a'&&old[wi+1]<='z')
     95            {
     96             ja=old[wi+1]-i;
     97             ja-='a';
     98             ja+='A';
     99             nw+=ja;
    100            }
    101          if(p1==2&&(old[wi+1]<'a'||old[wi+1]>'z'))
    102            {
    103       ja=old[wi+1]-i;
    104             nw+=ja;
    105            }
    106          if(p1==3)
    107            {
    108             nw+="*";
    109            }
    110         }
    111     }
    112  return;
    113 }
  • 相关阅读:
    web test Grinder / nGrinder / ngrinder / gor / tcpcopy
    【python学习】之五、可调用对象
    【C/C++学习】之五、dynamic_cast
    【网络编程】之一、初识WinSocket
    【啊哈!算法】之四、选择排序
    【IOS学习】之二、虚拟机MAC Lion 10.7 下问题集锦和xcode的安装
    【网络编程】之二、socket API学习
    【C/C++学习】之六、reinterpret_cast
    【啊哈!算法】之五、归并排序
    【IOS学习】之一、VM8下安装mac lion10.7 黑苹果之续
  • 原文地址:https://www.cnblogs.com/CYWer/p/4776371.html
Copyright © 2020-2023  润新知