[C言語]ペクジュン15663~156666:NとM(9)~(12)
構想
そのまま一気に解けた.しかし、最初は間違った答えで、例を見れば、同じ値は2回も現れないことがわかります.だから条件はprint[depth]!=arr[i]を追加して行いますが、例はすべて正しいですが、3、1、12を入れると2行しか出力されません.
デバッグ後,1 1 1 2,1 2 1の出力効果は良好であったが,2 1 1に保存したが,1 1は同じ値でbt関数(print[depth]が現在値)に入ることはできなかった.
したがってvalueを作成し、前の値を保存するときにarr[i]と比較するようにします.
残りの3つも同じです.
#include <stdio.h>
#include <stdlib.h>
int n, m;
int arr[10];
int test[10];
int print[10];
int compare(const void *a, const void *b)
{
int num1 = *(int *)a;
int num2 = *(int *)b;
if (num1 < num2)
return -1;
if (num1 > num2)
return 1;
return 0;
}
void bt(int depth)
{
int i;
int value = -1;
if (m == depth)
{
i = 0;
while (i < m)
{
printf("%d ",print[i]);
i++;
}
printf("\n");
}
else
{
i = 0;
while (i < n)
{
if (test[i] == 0 && value != arr[i])
{
value = arr[i];
test[i] = 1;
print[depth] = arr[i];
bt(depth + 1);
test[i] = 0;
}
i++;
}
}
}
int main()
{
int i;
scanf("%d %d", &n, &m);
i = 0;
while(i < n)
{
scanf("%d", &arr[i]);
i++;
}
qsort(arr, n, sizeof(int), compare);
bt(0);
}
Reference
この問題について([C言語]ペクジュン15663~156666:NとM(9)~(12)), 我々は、より多くの情報をここで見つけました https://velog.io/@kimmainsain/C언어-백준-15663-15666-N과-M-9-12テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol