栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java 的全排列和组合

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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了

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/724057.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号