posts - 20,  comments - 6,  trackbacks - 0
 1#include<stdio.h>
 2#include<string.h>
 3#include<stdlib.h>
 4char a[10000][1000];
 5int cmp(const void *a,const void *b)
 6{
 7        return strcmp((char *)a,(char *)b);
 8}

 9int zh(char *s, int l)//最小表示法 从return值开始为最小 
10{
11    int i = 0, j = 1, k = 0, t;
12    while (i < l && j < l && k < l)
13    {
14        t = s[(i + k)%l] - s[(j + k)%l];
15        if (!t) ++ k;
16        else
17        {
18            if (t > 0)
19            {
20                 i = i + k + 1;
21            }

22            else 
23            {
24                j = j + k + 1;
25            }

26            if (i == j) ++j;
27            k = 0;
28        }

29    }

30    return i>j?j:i;
31}

32int main()
33{
34    int n,si,q,l;
35    int i,j,p,c,k;
36    char b[1000],cc[1000];
37    while(scanf("%d",&n)!=EOF)
38    {
39        c=0;
40        memset(a,0,sizeof(a));
41        getchar();
42        for(i=0;i<n;i++)
43        {
44            scanf("%s",b);
45            l=strlen(b);
46            si=zh(b,l);
47            for(j=si,k=0;j<l;j++,k++)
48            {
49                a[i][k]=b[j];
50            }

51            for(j=0;j<si;j++,k++)
52            {
53                a[i][k]=b[j];
54            }

55            a[i][k]='\0';
56        }

57        qsort(a,n,sizeof(a[i]),cmp);
58        c=1;
59        for(i=1;i<n;i++)
60        {
61            if(strcmp(a[i-1],a[i])!=0)
62                c++;
63        }

64        printf("%d\n",c);
65    }

66}

67    
68
posted on 2009-01-27 14:06 混沌的云 阅读(201) 评论(0)  编辑 收藏 引用

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


<2009年1月>
28293031123
45678910
11121314151617
18192021222324
25262728293031
1234567

常用链接

留言簿(1)

随笔档案

搜索

  •  

最新评论

阅读排行榜

评论排行榜