close

演算法

last ← true
for j ← len–2 down to 0 do
if aj < aj+1 then do
last ← false
break for loop
end if
end for
if last then return 0
for k ← j+1 to len–1 do
if aj > ak then do
break for loop
end if
end for
swap aj ? ak-1
reverse aj+1 ? an-1
return 1

別人寫的C程式參考

int num,j=1,level=0,a[15];
char ch[15],out[15];
void tt()
{
   int i;
   level+=1;
   for(i=0;i<num;i++){
      if(a[i]==0)
      {
         a[i]=1;
         out[level-1]=ch[i];
         if(level==num)
            printf("n%3d %s",j++,out);
         tt();
         a[i]=0;
      }
   level-=1;
}

void main()
{
   num=0;       /*number of input*/
   printf("nInput characters:");
   while((ch[num]=getchar())!='r')
   {
      a[num]=0;
      num+=1;
   }
   ch[num]='


arrow
arrow
    全站熱搜
    創作者介紹
    創作者 Kurumi 的頭像
    Kurumi

    LiFeどうでしょう

    Kurumi 發表在 痞客邦 留言(0) 人氣()