java 的全排列和组合

java 的全排列和组合,第1张

java 的全排列和组合
//java 全排列
private static void Main(){
    Set set = new HashSet<>();    //用于存储,去重
    Scanner sc = new Scanner(System.in);
    String s = sc.nextLine;
    Full(set,0,s.length()-1,s.toCharArray());
    System.out.pringln(set);
}

//全排列的核心代码块
private static void Full(Set set, int from, int to, char[] chars){
    if(from == to)
        set.add(new Set(chars));
    for(int i = from; i <= to; i++){
        swap(chars, from, i);
        Full(set, from + 1, to, chars);
        swap(chars, from, i);
    }
}

//交换代码块
private static void swap(char[] chars, int from, int i){
    char swap = chars[from];
    chars[from] = chars[i];
    chars[i] = temp;
}

//测试
public static void main(String []args){
    Main();
}

---------------------------------------------------------------------------------------------------------------------------------

//组合

private static void Main(){
    Scannner scanner = new Scanner(System.in);
    int n = scanner.nextInt;
    int k = scanner.nextInt;
    List> arr = new ArrayList<>();
    combine(arr, new ArrayList, n, k, 1);
    for(List list:arr){
        System.out.println(list);
    }
}

//核心代码
private static void combine(List> arr, List temp,int n, int k, int start){
    if(k == 0){
        arr.add(new ArrayList<>(temp));
        return;
    }
    for(int i = start; i <= n; i++){
        temp.add(i);
        combine(arr, temp, n, k - 1, i + 1);
        temp.remove(temp.size() - 1);
    }
}

//主方法
private static void Main(String[] args){
    Main();
}






累死我了,记事本写的,可能有写错的单词,太感谢Idea了

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/5719610.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-12-18
下一篇2022-12-18

发表评论

登录后才能评论

评论列表(0条)

    保存