[C言語]白駿15650:NとM(2)



https://velog.io/@seochan99/15650-N%EA%B3%BC-M-2今回もこの人の助けを得ました.この4つのタイプを理解して、すぐに出してみてください.
回帰問題を探して解決します.

に答える

#include <stdio.h>

int n, m;
int result[1000];
int check[1000];

void DFS(int depth, int cut)
{
    int i;

    if (depth == m)
    {
        for (int i = 0; i < m; i++)
            printf("%d ", result[i]);
        printf("\n");
    }
    else
    {
        for (i = 1; i <= n; i++)
        {
            if (check[i] == 0 && cut < i)
            {
                result[depth] = i;
                check[i] = 1;
                DFS(depth + 1, i);
                check[i] = 0;
            }
        }
    }
}

int main(void)
{
    scanf("%d %d", &n, &m);
    DFS(0, 0);
    return 0;
}
15649の問題は私に繰り返しの数字を印刷させて、これはDFSが回転するためで、2番目のfor文の中で私はいつも1から始めます!
なぜなら、i=2でDFS(1)が起動すると(2,1)も出力され、前に出力された(1,2)と重なるので、cutという変数を追加してiが1より大きくなるように…!
そこでチェック以外の首都を出力すればいいのですが…!では…!