誰可以幫我解釋一下這程序跑法??
void permute(char a[], int k, int input_var)
{
int i,j, inversion=0;
char temp;
if ( k == input_var )
{
printf("(");
for ( i=1; i<input_var; i++ )
printf(" %d,",a[i]);
printf(" %d )",a[i]);
for ( i=1; i<=input_var; i++ )
for ( j = i+1; j<=input_var; j++)
if (a[i] > a[j])
inversion++;
printf(" Inversion = %2d, ",inversion);
if ( (inversion %2) == 1 )
printf("odd permutation.\n");
else
printf("even permutation.\n");
}
else
{
for ( i=k; i<=input_var; i++)
{
temp=a[k]; a[k]=a[i]; a[i]=temp;
permute ( a, k+1, input_var);
temp=a[k]; a[k]=a[i]; a[i]=temp;
}
}
}
int main(int argc, char* argv[])
{
int i, input_var;
char setofnumber[10], ch;
for (i=0; i<10; i++)
permute ( a, k+1, input_var);
temp=a[k]; a[k]=a[i]; a[i]=temp;
}
}
}
int main(int argc, char* argv[])
{
int i, input_var;
char setofnumber[10], ch;
for (i=0; i<10; i++)
setofnumber[i]=i;
printf("Please input the number of entries to permute\n");
scanf("%d",&input_var);
permute(setofnumber, 1, input_var);
return 0;
}
上面是完整程式碼
____________________________________________________________________
下面這程式是怎麼跑的~~可以跟我說明一下
好像是利用遞迴嗎??
void permute(char a[], int k, int input_var)
{
int i,j, inversion=0;
char temp;
if ( k == input_var )
{
printf("(");
for ( i=1; i<input_var; i++ )
printf(" %d,",a[i]);
printf(" %d )",a[i]);
for ( i=1; i<=input_var; i++ )
for ( j = i+1; j<=input_var; j++)
if (a[i] > a[j])
inversion++;
printf(" Inversion = %2d, ",inversion);
if ( (inversion %2) == 1 )
printf("odd permutation.\n");
else
printf("even permutation.\n");
}
else
{
for ( i=k; i<=input_var; i++)
{
temp=a[k]; a[k]=a[i]; a[i]=temp;
permute ( a, k+1, input_var);
temp=a[k]; a[k]=a[i]; a[i]=temp;
}
}
}