http://acm.hust.edu.cn/vjudge/contest/123670#problem/F 密码5201
#include<stdio.h>
#include<string.h>
int main()
{
//freopen("C:\\Users\\5201\\Desktop\\1.txt","r",stdin);
int n;
scanf("%d",&n);getchar();
while(n--)
{
int ch;
char s[105];
int i=0,mi=65535;
while( ch=getchar() )
{
if(ch==EOF||ch=='\n') break;
s[i]=ch;
mi=mi<ch?mi:ch;
i++;
}
s[i]=0;
int len=strlen(s);
char a[101][101];
int count=0;
for(i=0;i<len;i++)
{
if(s[i]==mi)
{
int j;
for(j=0;j<len;j++)
{
a[count][j]=s[(i+j)%len];
}
a[count][len]=0;
count++;
}
}
mi=0;
for(i=1;i<count;i++)
{
if( strcmp(a[mi],a[i])>0 ) mi=i;
}
puts(a[mi]);
}
}
思路
1.找到最小的字母,以那个字母为第0个字母,存入二维数组中。
2.遍历二维数组,找到最小的字符串,输出。