这是一个家庭作业。我接近完成它,但我无法克服最后一个驼峰。我打印了一个数组的所有可能组合,但我不知道如何从所有组合中挑选出独特的组合。我已经尝试过这种方式和其他一些变体,但我无法让它工作,我不知道为什么。大小是数组的长度,包括终止输入的 -1 值。Rowdata 是一个 maxsize 为 25 的数组。 PrintFx 只是一个打印函数,带有四个循环来打印最终数组。谢谢,代码如下:
void RearrangeArray(int rowdata[],int Size)
{
int firstindex;//This is the loop control variable which controls the first permutation of the array
int secondindex;//This is the index control variable that controls the second variables in the array
int temp[MAXROW]= {0};
int thirdindex = 0;
for (firstindex = 0; firstindex<=Size-1; firstindex++)
{
for (secondindex=firstindex+1; secondindex<=Size-1; secondindex++)
{
if(rowdata[firstindex]!=rowdata[secondindex] || thirdindex == 0)
{
temp[firstindex]=rowdata[firstindex];
rowdata[firstindex]=rowdata[secondindex];
rowdata[secondindex] = temp[firstindex];
if(rowdata[firstindex] == rowdata[secondindex])
{
thirdindex=thirdindex+1;
}
PrintFx(rowdata, Size);
}
}
}
}
Enter row data: 43101 57784 43101 57784 43101 -1
Combination #1: 57784 43101 43101 57784 43101
Combination #2: 43101 57784 43101 57784 43101
Combination #3: 57784 57784 43101 43101 43101
Combination #4: 43101 43101 57784 57784 43101
Combination #5: 43101 43101 43101 57784 57784
Combination #6: 43101 57784 57784 43101 43101
Combination #7: 43101 57784 43101 43101 57784