Chinaunix首页 | 论坛 | 博客
  • 博客访问: 481958
  • 博文数量: 59
  • 博客积分: 345
  • 博客等级: 二等列兵
  • 技术积分: 1380
  • 用 户 组: 普通用户
  • 注册时间: 2011-06-18 22:44
个人简介

to be myself

文章分类

全部博文(59)

文章存档

2017年(5)

2013年(47)

2012年(3)

2011年(4)

分类: C/C++

2013-03-02 17:00:43

举例说说这一题吧,比如下面
ABBCFEA(假设为dst)
CCGGHJB(假设为src)
不关心怎么从src变到dst,我先qsort一遍,两者就变成:
AABBCEF
BCCGGHJ
不深度题目,人工的都以为这个是NO.
但非也,我们再找一下两个串的相同字母数字序列.两者分别是:
22111
12211
这个你应该了解吧,就是AA为2,BB为2,C为1,E为1,F为1.
然后再把两串数字qsort就是
11122
11122
再比较一下,一样就YES了,否则NO.

总结个人WA原因:
1.第一次WA:小瞧水题、人太单纯被题目举例骗。
2.粗细复制,忘记修改src为dst导致总输出YES.


点击(此处)折叠或打开

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>

  4. int cmp(constvoid*a, constvoid*b)
  5. {
  6.    return? *(char*)a - *(char*)b;
  7. }

  8. int cmpint(constvoid*a, constvoid*b)
  9. {
  10.    return *(int*)a? -? *(int*)b;
  11. }

  12. int? main()
  13. {
  14.    inti,? a[101], b[101], count=0, j,? k, q;
  15.    char dst[101],? src[101], ch;
  16.    scanf("%s%s", dst, src);
  17.    memset(a,? 0,? sizeof(a));
  18.    memset(b, 0, sizeof(b));
  19.    qsort(src, strlen(src), sizeof(char), cmp);
  20.    qsort(dst,? strlen(dst),? sizeof(char), cmp);
  21.    for(i=0,k=0;? src[i]!=''; )
  22.    {
  23.         j = i;
  24.         ch =? src[i];
  25.         count++;
  26.         while(src[++i] == ch)
  27.         {
  28.             count++;
  29.         }
  30.         a[k++] =? count;
  31.         count = 0;
  32.     }
  33. //WA了好几次在于下面for循环里dst一直是复制上面的src没改过来,copy是双刃剑啊.
  34.     for(i=0,q=0,count=0; dst[i]!=''; )
  35.     {
  36.         j = i;
  37.         ch? = dst[i];
  38.         count++;
  39.         while(dst[++i] ==? ch)
  40.         {
  41.             count++;
  42.         }
  43.          b[q++]? = count;
  44.          count = 0;
  45.     }
  46.     qsort(a, k,? sizeof(int), cmpint);
  47.     qsort(b, q, sizeof(int), cmpint);
  48.     for(i=0;? i<k; i++)
  49.     {
  50.         if(a[i] != b[i])
  51.         {
  52.             printf("NOn");
  53.             break;
  54.         }
  55.     }
  56.     if(i? == k)
  57.     {
  58.         printf("YESn");
  59.     }
  60.     return 0;
  61. }

Problem:User:Memory: 136KTime: 0MSLanguage: CResult:Accepted


2011-03-11 22:51 发表于百度空间,今搬至CU。


阅读(1919) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~