运动员打靶10次,求打中90环的所有可能情况,要求用递归算法实现

public class Main {
    static int []a = new int[10];
    public static void main(String[] args) {
        dfs(90,9);




    }
    public static void outpu(){
        for(int i=9;i>=0;i--)
        {
            System.out.print(a[i]+" ");
        }
        System.out.println();
    }
    public static void dfs(int score,int sum){//sum表示第几次打靶
        if(score<0||score>(sum+1)*10){//分数小于0或者剩余打靶次数不可能打到这个分值 退出
            return;
        }
        if(sum==0){
            a[sum] = score;
            outpu();//到最后一次 输出当前所有数组
            return;
        }
        for(int i=0;i<=10;i++){
            a[sum] = i;//下一次打靶每次的靶值
            dfs(score-i,sum-1);
        }
    }
}

 

posted @ 2021-03-26 08:19  chenyuan#  阅读(82)  评论(0编辑  收藏  举报