• [csp-201403-3]命令行选项


     1 #include<bits/stdc++.h>
     2 //#include <sstream>  // if want to use stringstream
     3 using namespace std;
     4 
     5 const int N=310;
     6 
     7 struct node{
     8     string c;
     9     bool has_c,can_has_c,bk,vis;
    10 }a[N];
    11 string s,c;
    12 int sl;
    13 
    14 void init()
    15 {
    16     getline(cin,s);
    17     sl=s.size();
    18     for(int i=1;i<=26;i++) a[i].bk=0,a[i].vis=0,a[i].can_has_c=0,a[i].has_c=0;
    19     for(int i=0;i<sl;i++)
    20     {
    21         int now=s[i]-'a'+1;
    22         a[now].bk=1;
    23         a[now].can_has_c=0;
    24         if(i+1<sl && s[i+1]==':') 
    25         {
    26             i++;
    27             a[now].can_has_c=1;
    28         }
    29     }
    30 }
    31 
    32 void getnext()
    33 {
    34     c="";
    35     while(sl<s.size())
    36     {
    37         if(s[sl]==' ' || s[sl]=='
    ') {sl++;break;}
    38         c+=s[sl];sl++;
    39         //if(!((s[sl]>='a' && s[sl]<='z') || (s[sl]>='0' && s[sl]<='9') || s[sl]=='-')) {sl++;break;}
    40     }
    41 }
    42 
    43 void solve()
    44 {
    45     for(int i=1;i<=26;i++) a[i].has_c=0,a[i].vis=0;
    46     sl=0;
    47     getline(cin,s);
    48     getnext();
    49     while(1)
    50     {
    51         getnext();
    52         if(c.size()==0) return;
    53         if(c[0]=='-')
    54         {
    55             int now=c[1]-'a'+1;
    56             if(!a[now].bk) return;
    57             a[now].vis=1;
    58             if(a[now].can_has_c)
    59             {
    60                 getnext();
    61                 if(c.size()==0) 
    62                 {
    63                     if(!a[now].has_c) a[now].vis=0;
    64                     return ;
    65                 }
    66                 a[now].has_c=1;
    67                 a[now].c=c;
    68             }
    69         }
    70         else return ;
    71     }
    72 }
    73 
    74 void output()
    75 {
    76     for(int i=1;i<=26;i++)
    77     {
    78         if(a[i].vis) printf(" -%c",i-1+'a');
    79         if(a[i].has_c) cout << ' ' << a[i].c;
    80     }
    81     cout << endl;
    82 }
    83 
    84 int main()
    85 {
    86     //freopen("a.in","r",stdin);
    87     init();
    88     int T;
    89     scanf("%d",&T);getline(cin,s);
    90     for(int TT=1;TT<=T;TT++)
    91     {
    92         printf("Case %d:",TT);
    93         solve();
    94         output();
    95     }
    96     return 0;
    97 }
  • 相关阅读:
    java字符串实现正序和倒序输出
    暑假前挑战赛1—— A,B题解
    深搜
    poj 1200 Crazy Search
    poj 1840 Eqs (hash)
    Choose the best route
    一个人的旅行
    畅通工程续
    最短路基础算法
    完全背包问题
  • 原文地址:https://www.cnblogs.com/KonjakJuruo/p/10110865.html
Copyright © 2020-2023  润新知