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

 

15652번: N과 M (4)

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

www.acmicpc.net

코드설명

백트래킹 문제입니다.

 

전형적인 백트래킹 문제로써, String str을 활용하여 값을 계속 더해주며 진행했습니다.

따로 answerArr을 선언하여 답을 출력해도 괜찮습니다.

코드

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

public class Main {
	public static int N, M;
	public static int[] arr;
	public static int answer = 0;
    public static void main(String[] args) throws IOException{
    	BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    	StringTokenizer st = new StringTokenizer(br.readLine());
    	N= Integer.parseInt(st.nextToken());
    	M= Integer.parseInt(st.nextToken());
    	
    	simulate(1, 0, "");
    }
    
    public static void simulate(int idx, int depth, String str) {
    	if(depth == M) {
    		System.out.println(str);
    		return ;
    	}
    	
    	for(int i=idx; i<=N;i++) {
    		simulate(i, depth + 1,str + i + " ");
    	}
    }
    
}

+ Recent posts