ccf201403-3 记录一个神tmwa了的代码 莫非我没看懂题。。。

  1 #include <string.h>
  2 #include<cstdio>
  3 #include<stdio.h>
  4 #include <iostream>
  5 #include<string>
  6 using namespace std;
  7 int check(char s,string ch)
  8 {
  9     for (int k = 0; k<ch.size(); k++)
 10         if (!(s-ch[k]))
 11         {
 12             if (!(ch[k + 1]- ':'))
 13                 return 2;//有这个命令 且带参数
 14             else 
 15                 return 1;//有这个命令 不带参数
 16         }
 17     return 0;//没这个参数
 18 }
 19 struct node
 20 {
 21     bool vis;
 22     string num;
 23     int no;
 24     char e;
 25 };
 26 int main()
 27 {
 28     char ch[60]; cin >> ch;
 29     int n,i,j,k,count; cin >> n;getchar();
 30     string str, ans[20];
 31     node zm[26]; bool flag;
 32     for (i = 0; i < n; i++)
 33     {
 34         count = 0;
 35         for (k = 0; k < 26; k++)
 36         {
 37             zm[k].e = k + 97;
 38             zm[k].vis = 0;
 39             zm[k].no = 0;
 40             zm[k].num.clear();
 41         }
 42         getline(cin, str);
 43         for(j=3;j<str.size();j++)
 44             if (!(str[j] -'-'))
 45             {
 46                 if (check(str[j + 1], ch))
 47                 {
 48                     if (check(str[j + 1], ch) == 1)//不带参数
 49                     {
 50                         if (!zm[str[j + 1] - 97].vis)//没有访问过
 51                         {
 52                             zm[str[j + 1] - 97].vis = 1;
 53                             zm[str[j + 1] - 97].no = ++count;
 54                         }
 55     
 56                         if (str[j + 3] - '-')//后面如果跟了参数或者别的
 57                             break;
 58                         j = j + 2;
 59                     }
 60                     else if (check(str[j + 1], ch) == 2)//带参数
 61                         if (str[j + 3]<'0' || str[j + 3]>'9')
 62                             break;
 63                         else
 64                         {
 65                             if (!zm[str[j + 1] - 97].vis)
 66                             {
 67                                 zm[str[j + 1] - 97].vis = 1;
 68                                 zm[str[j + 1] - 97].no = ++count;
 69                             }
 70                             k = j + 3;
 71                             zm[str[j + 1] - 97].num.clear();
 72                             while (str[k] > '0'&&str[k] < '9')
 73                             {
 74                                 zm[str[j + 1] - 97].num.push_back(str[k++]);
 75                             }
 76                             j = k-1;
 77                         }
 78                 }
 79                 else
 80                     break;
 81             }
 82         node temp;
 83         for(k=0;k<26;k++)
 84             for (j = k + 1; j < 26; j++)
 85             {
 86                 if (zm[j].no < zm[k].no)
 87                 {
 88                     temp = zm[j];
 89                     zm[j] = zm[k];
 90                     zm[k] = temp;
 91                 }
 92             }
 93         for (k = 0; k < 26; k++)
 94         {
 95             if (zm[k].vis)
 96             {
 97                 //cout << '-' << zm[k].e<<' ';
 98                 ans[i].push_back('-');
 99                 ans[i].push_back(zm[k].e);
100                 ans[i].push_back(' ');
101             }
102             if (!zm[k].num.empty())
103             {
104                 //cout << zm[k].num << ' ';
105                 ans[i]+= zm[k].num;
106                 ans[i].push_back(' ');
107             }
108         }
109         //cout << endl;
110     }
111     for (i = 0; i < n; i++)
112     {
113         cout << "Case " << i + 1 << ':';
114         cout << ans[i].c_str() << endl;
115     }
116     return 0;
117 }

 

转载于:https://www.cnblogs.com/yuelien/p/6510688.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值