Chinaunix首页 | 论坛 | 博客
  • 博客访问: 502516
  • 博文数量: 65
  • 博客积分: 1158
  • 博客等级: 少尉
  • 技术积分: 1261
  • 用 户 组: 普通用户
  • 注册时间: 2012-07-18 22:07
文章分类

全部博文(65)

文章存档

2016年(1)

2014年(2)

2013年(9)

2012年(53)

分类: C/C++

2012-11-20 20:12:14

/*

Description 
有些字符串,如果满足下面的性质,则称为成对的字符串:
a. 所有的字符在字符串中出现偶数次
b. 每一对相同的字符之间不会有出现奇数次的字符
现在给你一些字符串,请判断这些字符串是否为成对的字符串。


输入:

第一行是一个整数K,表示有多少个测试用例,以后每行一个测试用例。
每行为一个字符串(长度不超过1000个字符)。


输出:

每行输出一个测试用例的结果。如果是,输出Yes,否则输出No。
 
  
Sample Input  
aAbbAaaabbcc
abcdefghijklmn 
  
Sample Output  
Yes
No 
  
Source 
程序设计实践 
  
Hint 
字符串只有英文字母,大小写敏感。 
*/

点击(此处)折叠或打开

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

  3. bool judge(char s[],int,int,bool *);


  4. int main(void)
  5. {
  6.     int cases,length;
  7.     char s[1000];
  8.     scanf("%d",&cases);
  9.     getchar();
  10.     bool mark;

  11.     while(cases--)
  12.     {
  13.         mark = true;
  14.         gets(s);
  15.         length = strlen(s);
  16.         //printf("%d\n",length);

  17.         if(judge(s,0,length-1,&mark))
  18.         {
  19.             printf("Yes\n");
  20.         }
  21.         else
  22.         {
  23.             printf("No\n");
  24.         }

  25.     }
  26.     return 0;
  27. }

  28. bool judge(char s[],int start,int end,bool * mark)
  29. {
  30.     int i;
  31.     if(start > end )
  32.     {
  33.         return false;
  34.     }
  35.     
  36.     if( ( end - start + 1 ) % 2 != 0 )
  37.     {
  38.         * mark = false;
  39.         return *mark;
  40.     }
  41.     for(i=start+1;i<=end;i++)
  42.     {
  43.         if( s[i] == s[start] )
  44.         {
  45.             if( (start + 1 < i - 1) && *mark )
  46.             {
  47.                 judge(s,start+1,i-1,mark);
  48.             }
  49.             if( (i + 1 < end) && *mark )
  50.             {
  51.                 judge(s,i+1,end,mark);
  52.             }
  53.             break;
  54.         }
  55.         
  56.     }
  57.     if( i > end )
  58.     {
  59.         *mark = false;
  60.     }

  61.     return *mark;
  62. }

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