티스토리 뷰

728x90

문제

https://www.acmicpc.net/problem/15651

 

15651번: N과 M (3)

한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해

www.acmicpc.net

 

풀이 및 소스코드

 

순열로 풀어주었다!!

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Main {
	static int n,m;
	static StringBuilder sb;
	static StringBuilder tmp;
	public static void main(String[] args) throws NumberFormatException, IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st;
		sb = new StringBuilder();
		tmp = new StringBuilder();
		
		st = new StringTokenizer(br.readLine());
		n = Integer.parseInt(st.nextToken());
		m = Integer.parseInt(st.nextToken());
		make(1, 0);
		System.out.println(sb);
	}
	public static void make(int start, int cnt) {
		if(cnt == m) {
			sb.append(tmp).append("\n");
			return;
		}
		
		for(int i=1;i<=n;i++) {
			String t = tmp.substring(0);
			tmp.append(i).append(" ");
			make(i, cnt+1);
			tmp = new StringBuilder();
			tmp.append(t);
			
		}
		
	}
}
반응형