编程中1到n顺序下去怎么设置

时间:2025-03-05 02:48:23 明星趣事

在编程中,要生成1到n的顺序排列,可以使用多种方法。以下是一些常见的方法:

使用循环

```c

include

void print_permutation(int n) {

for (int i = 1; i <= n; i++) {

printf("%d ", i);

}

printf("\n");

}

int main() {

int n;

printf("Enter a number: ");

scanf("%d", &n);

print_permutation(n);

return 0;

}

```

使用递归

```c

include

void print_permutation(int n, int *A, int cur) {

if (cur == n) {

for (int i = 0; i < n; i++) {

printf("%d ", A[i]);

}

printf("\n");

} else {

for (int i = 1; i <= n; i++) {

if (A[cur] == 0) {

A[cur] = i;

print_permutation(n, A, cur + 1);

A[cur] = 0;

}

}

}

}

int main() {

int n;

printf("Enter a number: ");

scanf("%d", &n);

int A[n];

for (int i = 0; i < n; i++) {

A[i] = 0;

}

print_permutation(n, A, 0);

return 0;

}

```

使用字典序生成

```c

include

void print_permutation(int n) {

int A[n];

for (int i = 0; i < n; i++) {

A[i] = i + 1;

}

for (int i = 0; i < n; i++) {

int j = i;

while (A[j] != 0) {

int k = j + 1;

while (k < n && A[k] < A[j]) {

k++;

}

if (k < n) {

int temp = A[j];

A[j] = A[k];

A[k] = temp;

}

j = i;

}

}

for (int i = 0; i < n; i++) {

printf("%d ", A[i]);

}

printf("\n");

}

int main() {

int n;

printf("Enter a number: ");

scanf("%d", &n);

print_permutation(n);

return 0;

}

```

使用栈