제가 하려고 하는거는
1 1 1 1 1
1 1 1 1 2
1 1 1 1 3
1 1 1 1 4
1 1 1 2 0
1 1 1 2 2
1 1 1 2 3
1 1 1 2 4
1 1 1 3 0
1 1 1 3 3
.......
4 4 0 0 0
4 4 4 0 0
4 4 4 4 0
4 4 4 4 4
이런식으로 만들고 싶은데..
1 1 1 1 1
1 1 1 1 2
1 1 1 1 3
1 1 1 1 4
1 1 1 2 0
1 1 1 2 1
1 1 1 2 2
..... 이런식으로 만들어 지긴 했는데.. 이 다음에 어떻게 수정해야할지 감이 안잡힙니다..ㅠ
제가 만든 재귀함수는 아래와 같습니다..
입력은
4
1 2 3 4
5
입니다.
import java.util.Scanner;
public class first2 {
static int n = 0;
static int value = 0;
static int count = 0;
static int k = 0;
static int[] array;
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
n = input.nextInt();
int q = Integer.MAX_VALUE;
int p = 0;
int[] coin = new int[n+1];
int[] coin1 = new int[n];
for(int i = 0 ; i < n; i++)
coin1[i] = input.nextInt();
for(int i = 1 ; i < n+1; i++) {
for(int j = 0; j < n; j++)
if(q > coin1[j]) {
q = coin1[j];
p = j;
}
coin[i] = q;
coin1[p] = Integer.MAX_VALUE;
q = Integer.MAX_VALUE;
}
coin[0] = 0;
n = input.nextInt();
if(n/coin[1] == 0) {
System.out.print("0");
System.exit(0);
}
array = new int[n/coin[1]];
back1(coin, array.length-1, 0);
}
public static void back1(int[] coin, int point, int i) {
for(int j=0; j < array.length; j++) {
for(int p = 0 ; p < array.length; p++)
System.out.print(array[p] + " ");
System.out.println();
array[point]++;
for(int q = array.length-1; q > 0; q--) {
if(array[q] == coin.length) {
array[q] = 0;
array[q-1]++;
}
}
}
if(array[0] < coin.length)
back1(coin, point, i);
}
}
입니다..