题目描述
输入两个整数 n 和 m,从数列1,2,3…….n 中随意取几个数,使其和等于 m ,要求将其中所有的可能组合列出来
输入描述:
每个测试输入包含2个整数,n和m
输出描述:
按每个组合的字典序排列输出,每行输出一种组合
示例1
输入
5 5
输出
1 4
2 3
5
解析:需要注意的是可能有三个数来组合,如
输入:
6 8
输出:
1 2 5
1 3 4
2 6
3 5
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Scanner;
public class Main {
public static void print(int n,int m){
int [] arr= new int[n];
for(int i=0;i<n;i++){
arr[i]=i+1;
}
for(int i=0;i<n;i++){
if(arr[i]==m){//一个数满足m了
System.out.println(arr[i]);
continue;
}
for(int j=i+1;j<n;j++){
if((arr[i]+arr[j])==m){//两个数和可以满足m
System.out.println(arr[i]+" "+arr[j]);
continue;
}else{//尝试3个数和是否满足m
for(int k=j+1;k<n;k++){
if((arr[i]+arr[j]+arr[k])==m){
System.out.println(arr[i]+" "+arr[j]+" "+arr[k]);
}
}
}
}
}
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while(sc.hasNextLine()){
int n=sc.nextInt();
int m=sc.nextInt();
print(n, m);
}
}
}