c语言中,如何输出一个数组的全排列!如a[3]={1,2,3} 要求输出1 2 3,1 3 2,

2025-04-06 01:59:36
推荐回答(1个)
回答1:

#include
#define N 3
int a[N];
void perm(int);
void print();
void swap(int, int);
int main()r> {
int i,n;
int offset;
for(i = 0; ia[i] = i + 97;
perm(0);
}
void perm(int offset)
{
int i, temp;
if(offset == N-1)
{
print();
return;
}
for(i = offset; i < N; i++)
{
swap(i, offset);
perm(offset + 1);
swap(i, offset);
}
}
void print()
{
int i;
for(i = 0; i < N; i++)
printf(' %c ',a[i]);
printf('\n');
}
void swap(int i, int offset)
{
int temp;
temp = a[offset];
a[offset] = a[i];
a[i] = temp;
}