zoukankan      html  css  js  c++  java
  • UVA 11988 Broken Keyboard (a.k.a. Beiju Text)

    开始用vector模拟,用一个迭代器its来保存当前光标位置,写完发现insert可能复杂度有点高还是什么的,tle了。。。

    后来用另一个方法,从后往前遍历,用一个数r 来表示每次光标移到前面后再次移动的位置(可能说的不是很清楚,具体看代码吧。。。囧rz)每次碰到'['则输出从'['到r 的字符并标记已经输出过,最后从前往后遍历,顺序输出还未输出过的字符。

     1 #include <iostream>
     2 #include <cstring>
     3 #include <cstdio>
     4 #include <algorithm>
     5 using namespace std;
     6 
     7 const int maxn = 100005;
     8 
     9 int main (){
    10     int visit[maxn];
    11     char str[maxn];
    12     while (gets(str)!=NULL){
    13         int len=strlen(str);
    14         memset (visit,0,sizeof visit);
    15         int r;
    16         r=len;
    17         for (int i=len-1;i>=0;i--){
    18             if (str[i]==']')
    19                 r=i;
    20             if (str[i]=='['){
    21                 for (int j=i+1;j<r;j++)
    22                     if (str[j]!='['&&str[j]!=']')
    23                         printf ("%c",str[j]),visit[j]=1;
    24                 r=i;
    25             }
    26         }
    27         for (int i=0;i<len;i++)
    28             if (!visit[i]&&str[i]!='['&&str[i]!=']')
    29                 printf ("%c",str[i]);
    30         printf ("
    ");
    31                 
    32     }
    33     return 0;
    34 }

    vector的写法也贴一下,虽然TLE 了 囧

     1 #include <iostream>
     2 #include <cstring>
     3 #include <cstdio>
     4 #include <vector>
     5 using namespace std;
     6 
     7 int main (){
     8     vector <char> s(100005);
     9     char str[100005];
    10     while (scanf ("%s",str)!=EOF){
    11         s.clear ();
    12         vector<char>::iterator its=s.begin() ;
    13         int len=strlen(str);
    14         for (int i=0;i<len;i++){
    15             if (str[i]=='['){
    16                 its=s.begin() ;
    17                 continue ;
    18             }
    19             if (str[i]==']'){
    20                 its=s.end() ;
    21                 continue ;
    22             }
    23             its=s.insert(its,str[i])+1; 
    24         }
    25         for (its=s.begin() ;its!=s.end() ;its++)
    26             printf ("%c",*its);
    27         printf ("
    ");
    28     }
    29     return 0;
    30 }
    View Code
  • 相关阅读:
    3、通道(中)
    2、通道(上-扣婚纱)
    1、色阶
    第三章—15、音乐播放界面效果
    第三章—14、下拉菜单
    第三章—13、点击按钮显示隐藏图片
    第三章-12、按钮的六种状态
    第三章—11、滑动导航(点击哪个就字体跟着变颜色)
    第三章-10、滑动选项卡(上)
    iOS 生命周期
  • 原文地址:https://www.cnblogs.com/gfc-g/p/3890147.html
Copyright © 2011-2022 走看看