これは宿題です。もうすぐ終わりますが、最後のこぶを乗り越えることができません。配列のすべての可能な組み合わせを出力しますが、すべての組み合わせから一意の組み合わせを並べ替える方法がわかりません。私はこの方法とこれの他のいくつかのバリエーションを試しましたが、それを機能させることができず、理由もわかりません. サイズは、入力を終了する -1 値を含む配列の長さです。Rowdata は maxsize が 25 の配列です。PrintFx は、最終的な配列を出力するための 4 つのループを持つ単なる出力関数です。ありがとう、コードは次のとおりです。
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