• toc {:toc}

๋ฌธ์ œ

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

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

์ž…๋ ฅ

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

์ถœ๋ ฅ

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

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

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

ํ’€์ด

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

์ด๋ฏธ ๋ฐฐ์—ด์— ๋“ค์–ด๊ฐ„ ์ˆซ์ž < ๋ฐฐ์—ด์— ๋“ค์–ด๊ฐ€์•ผ ํ•˜๋Š” ์ˆซ์ž

์ด๋ฏ€๋กœ ์ด ์กฐ๊ฑด์ด ์•„๋‹ˆ๋ฉด ๋ฐ˜๋ณต๋ฌธ continueํ•˜๋ฉด ๋œ๋‹ค.

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