• 【HDOJ】3242 List Operations


    注意以下数据:
    [] ++ []
    [] -- [1,2]
    [1,2] ++ []
    [] ++ [1]
    [2] ++ []
    [2,3] -- []
    结果是
    []
    []
    [1,2]
    [1]
    [2]
    [2,3]

     1 /* 3242 */
     2 #include <cstdio>
     3 #include <cstring>
     4 #include <cstdlib>
     5 
     6 #define MAXN 205
     7 
     8 typedef struct {
     9     char s[81];
    10     bool f;
    11 } word_t;
    12 
    13 word_t words[2][MAXN];
    14 int n[2], len[2];
    15 char src[2][MAXN];
    16 char op[5];
    17 
    18 int main() {
    19     int i, j, k;
    20     
    21     #ifndef ONLINE_JUDGE
    22         freopen("data.in", "r", stdin);
    23     #endif
    24     
    25     while (scanf("%s", src[0])!=EOF && (src[0][0]!='.')) {
    26         scanf("%s %s", op, src[1]);
    27         n[0] = n[1] = 0;
    28         for (i=0; i<2; ++i) {
    29             k = 0;
    30             for (j=1; src[i][j]; ++j) {
    31                 if (src[i][j]==',' || src[i][j]==']') {
    32                     if (src[i][j-1] != '[') {
    33                         words[i][n[i]].s[k] = '';
    34                         words[i][n[i]].f = true;
    35                         n[i]++;
    36                         k = 0;
    37                     }
    38                 } else {
    39                     words[i][n[i]].s[k++] = src[i][j];
    40                 }
    41             }
    42             len[i] = j;
    43         }
    44         
    45         if (op[0] == '+') {
    46             src[0][len[0]-1] = '';
    47             printf("%s", src[0]);
    48             if (n[1] == 0) {
    49                 printf("]
    ");
    50             } else {
    51                 if (n[0] == 0)
    52                     printf("%s
    ", src[1]+1);
    53                 else
    54                     printf(",%s
    ", src[1]+1);
    55             }
    56         } else {
    57             for (j=0; j<n[1]; ++j) {
    58                 for (i=0; i<n[0]; ++i)  {
    59                     if (words[0][i].f && strcmp(words[0][i].s, words[1][j].s)==0) {
    60                         words[0][i].f = false;
    61                         break;
    62                     }
    63                 }
    64             }
    65             printf("[");
    66             i = 0;
    67             while (i < n[0]) {
    68                 if (words[0][i].f)
    69                     break;
    70                 ++i;
    71             }
    72             if (i < n[0]) {
    73                 printf("%s", words[0][i].s);
    74                 ++i;
    75                 while (i < n[0]) {
    76                     if (words[0][i].f)
    77                         printf(",%s", words[0][i].s);
    78                     ++i;
    79                 }
    80             }
    81             printf("]
    ");
    82         }
    83     }
    84     
    85     return 0;
    86 }
  • 相关阅读:
    [BZOJ1934][Shoi2007]Vote 善意的投票[最小割]
    [BZOJ1066][SCOI2007]蜥蜴[最大流]
    [BZOJ2818][P2568]Gcd[欧拉函数]
    [BZOJ2208][P4306][JSOI2010]连通数[bitset优化floyd]
    [BZOJ1877][SDOI2009]晨跑[最大流+费用流]
    [BZOJ1040][P2607][ZJOI2008]骑士[树形DP+基环树]
    [BZOJ5347]冒泡排序[思维]
    [BZOJ2875][Noi2012]随机数生成器[等比数列求和+取模]
    [bzoj2809] 派遣
    [bzoj1965] 洗牌
  • 原文地址:https://www.cnblogs.com/bombe1013/p/4271425.html
Copyright © 2020-2023  润新知