gundumw100 2011-03-29 14:07 采纳率: 0%
浏览 241
已采纳

求2维数组有多少种排列的算法

有一2维数组,比如:String[][] a={{1,2},{3},{4},{5,6}};
求这些数字一共可以组合多少种排列,并打印所有可能情况

比如上面的数字可以有这些情况:1345,1346,2345,2346

最好不要递归,速度要快!

  • 写回答

2条回答 默认 最新

  • turing-complete 2011-03-29 15:47
    关注

    下面是采用广度优先遍历的代码,我已经测试过了
    [code="java"]
    /*有一2维数组,比如:String[][] a={{1,2},{3},{4},{5,6}};
    求这些数字一共可以组合多少种排列,并打印所有可能情况
    比如上面的数字可以有这些情况:1345,1346,2345,2346
    最好不要递归,速度要快! */

    import java.util.LinkedList;
    //采用广度优先遍历
    public class BroadFirst {

    //用于存储遍历情况的列表
    private LinkedList<String> list=new LinkedList<String>();
    //传入的参数
    private String[][] para=null;
    
    public BroadFirst(String[][] para){
        this.para=para;
        //将第一个列表添加到遍历列表的前端
        for(String str:this.para[0]){
            this.list.addLast(str);
        }
        //产生序列
        this.createSequence();
    }
    
    private void createSequence() {
        int innerLength = 1;
        while (true) {
            String temp = this.list.pollFirst();
            innerLength = temp.length();
            // 深度够了则执行完成
            if (innerLength == para.length) {
                this.list.addFirst(temp);
                return;
            } else {
                for (String innerStr : this.para[innerLength]) {
                    // 依次入队列的末端
                    this.list.addLast(temp + innerStr);
    
                }
            }
        }
    }
    
    public void printString(){
    
        for(String str:this.list){
            System.out.println(str);
        }
    }
    //测试
    public static void main(String[] args) {
        String[][] temp={{"1","2"},{"3"},{"4"},{"5","6"},{"7","8"}};
        BroadFirst bf=new BroadFirst(temp);
        bf.printString();
    }
    

    }
    [/code]

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥100 求汇川机器人IRCB300控制器和示教器同版本升级固件文件升级包
  • ¥15 用visualstudio2022创建vue项目后无法启动
  • ¥15 x趋于0时tanx-sinx极限可以拆开算吗
  • ¥500 把面具戴到人脸上,请大家贡献智慧
  • ¥15 任意一个散点图自己下载其js脚本文件并做成独立的案例页面,不要作在线的,要离线状态。
  • ¥15 各位 帮我看看如何写代码,打出来的图形要和如下图呈现的一样,急
  • ¥30 c#打开word开启修订并实时显示批注
  • ¥15 如何解决ldsc的这条报错/index error
  • ¥15 VS2022+WDK驱动开发环境
  • ¥30 关于#java#的问题,请各位专家解答!