• toc {:toc}

๋ฌธ์ œ

์ž์—ฐ์ˆ˜ N๊ณผ M์ด ์ฃผ์–ด์กŒ์„ ๋•Œ, ์•„๋ž˜ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ๊ธธ์ด๊ฐ€ M์ธ ์ˆ˜์—ด์„ ๋ชจ๋‘ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

  • 1๋ถ€ํ„ฐ N๊นŒ์ง€ย ์ž์—ฐ์ˆ˜ ์ค‘์—์„œ ์ค‘๋ณต ์—†์ด M๊ฐœ๋ฅผ ๊ณ ๋ฅธ ์ˆ˜์—ด

์ž…๋ ฅ

์ฒซ์งธ ์ค„์— ์ž์—ฐ์ˆ˜ N๊ณผ M์ด ์ฃผ์–ด์ง„๋‹ค. (1 โ‰ค M โ‰ค N โ‰ค 8)

์ถœ๋ ฅ

ํ•œ ์ค„์— ํ•˜๋‚˜์”ฉ ๋ฌธ์ œ์˜ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ์ˆ˜์—ด์„ ์ถœ๋ ฅํ•œ๋‹ค. ์ค‘๋ณต๋˜๋Š” ์ˆ˜์—ด์„ ์—ฌ๋Ÿฌ ๋ฒˆ ์ถœ๋ ฅํ•˜๋ฉด ์•ˆ๋˜๋ฉฐ, ๊ฐ ์ˆ˜์—ด์€ ๊ณต๋ฐฑ์œผ๋กœ ๊ตฌ๋ถ„ํ•ด์„œ ์ถœ๋ ฅํ•ด์•ผ ํ•œ๋‹ค.

์ˆ˜์—ด์€ ์‚ฌ์ „ ์ˆœ์œผ๋กœ ์ฆ๊ฐ€ํ•˜๋Š” ์ˆœ์„œ๋กœ ์ถœ๋ ฅํ•ด์•ผ ํ•œ๋‹ค.

์ถœ์ฒ˜: https://www.acmicpc.net/problem/15649

ํ’€์ด

๋ฐฑํŠธ๋ž˜ํ‚น ๊ณผ์ •์„ ์ƒ๊ฐํ•œ๋‹ค.

is_used๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ•ด๋‹น ๋ฒˆํ˜ธ๋ฅผ ์‚ฌ์šฉํ–ˆ๋Š”์ง€ ์•ˆ ํ–ˆ๋Š”์ง€ ํŒ๋‹จ.

์‚ฌ์šฉํ•˜์ง€ ์•Š์•˜๋‹ค๋ฉด ans์— ์ถ”๊ฐ€ํ•œ๋‹ค.

k๊ฐ’๊ณผ m๊ฐ’์ด ๊ฐ™๋‹ค๋ฉด ๊ฒฝ์šฐ์˜ ์ˆ˜ 1๊ฐœ๋ฅผ ๋ฐœ๊ฒฌํ•œ ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ์ถœ๋ ฅํ•œ๋‹ค.

์ดํ›„ is_used[i] = 0์„ ํ†ตํ•ด ์ด์ „ ๋…ธ๋“œ๋กœ ๊ฑฐ์Šฌ๋Ÿฌ ์˜ฌ๋ผ๊ฐ„ ๋ถ€๋ถ„์„ ๊ตฌํ˜„ํ•œ๋‹ค.

#include <bits/stdc++.h>
using namespace std;
 
int n, m;
int ans[10];
int is_used[10];
 
void func(int k){
    if(k==m){
        for(int i=0; i<m; i++){
            cout << ans[i] << ' ';
        }
        cout << '\n';
        return;
    }
    for(int i=1; i<=n; i++){
        if(!is_used[i]){
            ans[k] = i;
            is_used[i] = 1;
            func(k+1);
            is_used[i] = 0;
        }
    }
}
 
int main(){
    ios::sync_with_stdio(0);
    cin.tie(0);
    cin >> n >> m;
    func(0);
    return 0;
}