c++ - n个数的全排列问题,不知道自己错在哪里了,求助~

浏览:55日期:2023-05-30

问题描述

include<iostream>include<stdlib.h>

using namespace std;

void swap(int list[], int m, int n){

int temp;temp = list[m];list[m] = list[n];list[n] = temp;

}

void recurrence(int list[],int i, int j){

if (i == j){ for (int t = 0; t <= j; t++) {cout << list[t]; } cout << endl;}else{ for (int t = i; t <= j; t++) {swap(list, i, t);recurrence(list, i + 1, j);swap(list, i, t); }}

} int main(){

/*int b;cout << '请输入总的个数:n' << endl;cin >> b;int *a = new int[b];recurrence(a, 0, b-1);delete[]a;*/int *a;int b;cout << '请输入总的个数:n' << endl;cin >> b;a = (int*)malloc(b*sizeof(int));recurrence(a, 0, b - 1);system('pause');return 0;

}

我的运行结果是一串的负数

问题解答

回答1:

没有特别仔细看. 但你那个malloc 出来的a数组, 既没有用户输入, 也没有初始化, 它的数值是随机的.

回答2:

a = (int)malloc(bsizeof(int));

for (int i = 0; i < b; i++){ a[i] = i + 1;}

recurrence(a, 0, b - 1);请插入这段

相关文章: