UVA156 - Ananagrams

题目描写的乱七八糟 就是找无论顺序大小写 不重复出现的字符串 按字典序输出

http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=92

 

代码乱七八糟的写的真长

View Code
  1 #include <stdio.h>

  2 #include<string.h>

  3 #include<stdlib.h>

  4 typedef struct node

  5 {

  6     char c[25];

  7     int x;

  8 }st;

  9 st q[10001];

 10 int Comp(const void *p1,const void *p2)

 11 {

 12 return strcmp((char *)p1,(char *)p2);

 13 }

 14 int re(char x[],char y[])

 15 {

 16     int i,a[300],b[300],flag = 1;

 17     char d1[25],d2[25];

 18     memset(a,0,sizeof(a));

 19     memset(b,0,sizeof(b));

 20     if(strlen(x)==strlen(y))

 21     {

 22         for(i = 0 ; i < strlen(x) ; i++)

 23         {

 24             if(x[i]>='a'&&x[i]<='z')

 25             d1[i] = x[i]-32;

 26             else

 27             d1[i] = x[i];

 28             if(y[i]>='a'&&y[i]<='z')

 29             d2[i] = y[i]-32;

 30             else

 31             d2[i] = y[i];

 32            a[d1[i]]++;

 33            b[d2[i]]++;

 34         }

 35         for(i = 0 ; i < strlen(x) ; i++)

 36         {

 37             if(x[i]>='a'&&x[i]<='z')

 38             d1[i] = x[i]-32;

 39             if(a[d1[i]]!=b[d1[i]])

 40             {

 41                 flag = 0;

 42                 break;

 43             }

 44         }

 45         if(flag)

 46         return 1;

 47         else

 48         return 0;

 49     }

 50     else

 51     return 0;

 52 }

 53 int main()

 54 {

 55     int i, j, k, m=0,num,d =0, flag,y,n;

 56     char str[1001],str1[1001][25];

 57     memset(q,0,sizeof(q));

 58     while(gets(str)!=NULL)

 59     {

 60         if(str[0]=='#')

 61         break;

 62         k = strlen(str);

 63         flag = 0;

 64         y = 0;

 65         for(i = 0 ; i < k ; i++)

 66         {

 67             if(str[i]!=' ')

 68             {

 69                 flag = 1;

 70                 q[d].c[y] = str[i];

 71                 y++;

 72             }

 73             else if(flag)

 74             {

 75                 q[d].c[y]='\0';

 76                 d++;

 77                 y = 0;

 78                 flag = 0;

 79             }

 80         }

 81         if(str[k-1]!=' ')

 82         {

 83             q[d].c[y]='\0';

 84             d++;

 85             y = 0;

 86             flag = 0;

 87         }

 88     }

 89     if(!flag)

 90     n = d-1;

 91     else

 92     n = d;

 93     for(i = 0 ; i < d ; i++)

 94     for(j = i+1 ; j < d ; j++)

 95     {

 96         if(re(q[i].c,q[j].c))

 97         {

 98             q[i].x = 1;

 99             q[j].x = 1;

100         }

101     }

102     int w = 0;

103     for(i = 0 ; i < d ; i++)

104     if(!q[i].x)

105     {

106         strcpy(str1[w],q[i].c);

107         w++;

108     }

109     qsort(str1,w,sizeof(str1[0]),Comp);

110     for(i = 0 ;i < w ; i++)

111     puts(str1[i]);

112     return 0;

113 }

 

你可能感兴趣的:(uva)