zoukankan      html  css  js  c++  java
  • Abbreviation-----ACM ICPC 2016–2017, Northeastern European Regional Contest(字符串 模拟)

    http://codeforces.com/gym/101190/attachments

    题意:

    第一位大写,剩下小写的不小于两位的单词,

    连续若干(大于等于两个)这样的单词连续(用空格间隔)可以把他们的首写字母提出来再来个空格加个括号单词放括号里,其余不变,输出出来就行了

    这字符串模拟乍一看挺简单的,坑也不少,细细体会吧QWQ

    亮出丑爆的代码:

      1 #include <stdio.h>
      2 #include <string.h>
      3 
      4 int judge_xiao(char ch)
      5 {
      6     if(ch>='a'&&ch<='z') return 1;
      7     else return 0;
      8 }
      9 
     10 int judge_da(char ch)
     11 {
     12     if(ch>='A'&&ch<='Z') return 1;
     13     else return 0;
     14 }
     15 
     16 int len, i, curb, curc, j, k;
     17 int book[10005], book1[10005];
     18 char a[10005], b[10005][10005], c[10005][10005];
     19 
     20 int main()
     21 {
     22     freopen("abbreviation.in", "r", stdin);
     23     freopen("abbreviation.out", "w", stdout);
     24     while(gets(a))
     25     {
     26         memset(book, 0, sizeof(book));
     27         memset(book1, 0, sizeof(book1));
     28         len = strlen(a);
     29         curb = 0;
     30         curc = 0;
     31 
     32         for(i=0; i<len; i++)
     33         {
     34             j = 0;
     35             while((judge_xiao(a[i])||judge_da(a[i]))&&i<len)
     36             {
     37                 b[curb][j++] = a[i];
     38                 i++;
     39             }
     40             b[curb][j] = '';
     41             curb++;
     42             if(i<len)
     43             {
     44                 j = 0;
     45                 while((judge_xiao(a[i])==0&&judge_da(a[i])==0)&&i<len)
     46                 {
     47                     c[curc][j++] = a[i];
     48                     i++;
     49                 }
     50                 c[curc][j] = '';
     51                 curc++;
     52                 i--;
     53             }
     54 
     55         }
     56 
     57         for(i=0; i<curb; i++)
     58         {
     59             len = strlen(b[i]);
     60             if(judge_da(b[i][0])==0||len==1) continue;
     61             else
     62             {
     63                 j = 1;
     64                 while(judge_xiao(b[i][j])==1&&j<len)
     65                 {
     66                     j++;
     67                 }
     68                 if(j>=len) book[i] = 1;
     69             }
     70         }
     71 
     72         for(i=0; i<curc; i++)
     73         {
     74             if(strcmp(c[i], " ")==0) book1[i] = 1;
     75         }
     76 
     77 
     78         book1[curc] = 1;
     79         int num;
     80         for(i=0; i<curb; i++)
     81         {
     82             k = i;
     83             num = 0;
     84             while(book[k]==1&&k<curb)
     85             {
     86                 num++;
     87                 if(book1[k]==0) break;
     88                 k++;
     89             }
     90             if(book[k]==0||k>=curb) k--;
     91             if(num>1)
     92             {
     93                 for(j=i; j<=k; j++)
     94                 {
     95                     printf("%c", b[j][0]);
     96                 }
     97                 printf(" ");
     98                 printf("(");
     99                 for(j=i; j<=k; j++)
    100                 {
    101                     if(j==k) printf("%s)", b[j]);
    102                     else printf("%s", b[j]);
    103                     if(j<curc) printf("%s", c[j]);
    104                 }
    105                 i = k;
    106             }
    107             else
    108             {
    109                 printf("%s", b[i]);
    110                 if(i<curc) printf("%s", c[i]);
    111             }
    112         }
    113         printf("
    ");
    114     }
    115     return 0;
    116 }
  • 相关阅读:
    Vijos训练计划 1304回文数
    18.03.03 位运算作业三则
    18.03.01 codevs1014 装箱问题
    Wikioi 1020 孪生蜘蛛 Label:Floyd最短路
    TYVJ P1004 滑雪 Label:记忆化搜索
    洛谷 P1118 数字三角形游戏 Label:dfs
    TYVJ P1015 公路乘车 &&洛谷 P1192 台阶问题 Label:dp
    洛谷 P1147 连续自然数和 Label:等差数列
    洛谷 P1019 单词接龙 Label:dfs
    洛谷 P1025 数的划分 Label:dp
  • 原文地址:https://www.cnblogs.com/0xiaoyu/p/11396643.html
Copyright © 2011-2022 走看看