#include<stdio.h>
#include<string.h>
int main()
{
int t,len,i,j,k;
char a[110],c,d;
scanf("%d",&t);
getchar();
while(t--)
{
gets(a);
len=strlen(a);c='9'; //c为节点
for(i=0;i<len;i++)
{
if(a[i]<=c&&a[i]!='0')
{
c=a[i];
k=i;
}
} //找牌
for(i=0;i<len;i++)
{
if(i<k)
{
if(a[i]<=a[0])
{
d=a[i];
for(j=i;j>0;j--)
a[j]=a[j-1];
a[0]=d;
}
}
if(i==k)
{
for(j=i;j>0;j--)
a[j]=a[j-1];
a[0]=c;
}
}
puts(a);
}
}
当有一群特定的节点时,有事可以只找其中最有代表性的一个
例如hdu4550一题:比第一张牌要小的牌可以前置,单当牌组排好后,牌组第一张牌不能为零。所以我们找牌组中最小的不为零的最靠后的一张牌作为节点,用这张牌来处理循环