递归爆内存和解题出错求大佬们帮忙
查看原帖
递归爆内存和解题出错求大佬们帮忙
1096827
AC_or_suicide楼主2023/9/24 15:14
import java.util.ArrayList;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        
        if(n < 10 || n > 30) {
        	System.out.println(0);
        }else {
        	n -= 10;
        	ArrayList<ArrayList<Integer>> al2= new ArrayList<>();
        	ArrayList<Integer> al1= new ArrayList<>();
        	for(int i = 0;i <= 9;i++) {
        		al1.add(1);
        	}
        	method(0,n,al1,al2);
        	System.out.println(al2.size());
            for(int i = al2.size() - 1;i >= 0;i--) {
            	for(int j = 0;j < 10;j++) {
            		if(j == 9) {
            			System.out.print(al2.get(i).get(j));
            		}else {
            			System.out.print(al2.get(i).get(j) + " ");
            		}	
            	}
            	System.out.println();
            }   
        }  
    }
    
    public static void method(int n ,int val,ArrayList<Integer> al,ArrayList<ArrayList<Integer>> al2) {
    	if(val == 0) {
    		al2.add(new ArrayList<Integer>(al));
    		return;
    	}
    	for(int i = 0;i <= 9;i++) {
    		if(val > 0 && al.get(i) < 3) {
    			al.set(i, al.get(i) + 1);
    			val--;
    			method(n + 1, val, al,al2);
    			al.set(i, al.get(i) - 1);
    			val++;
    		}
    	}
    }
}


2023/9/24 15:14
加载中...