矩阵组合

public class Main {
    public static void main(String[] args){
        String[][] xx={{"A1","A2","A3","A4"},{"B1","B2","B3"},{"C1","C2","C3"}};
        int total=1;
        //所有组合的计数
        for(String[] x:xx){
            total*=x.length;
        }
        String[][] xx2=new String[total][xx.length];
        /*
         A1B1C1
         A2B1C1
         A3B1C1
         A4B1C1
         A1B2C1
         A2B2C1
         A3B2C1
         A4B2C1
         A1B3C1
         A2B3C1
         A3B3C1
         A4B3C1
         A1B1C2
         A2B1C2
         A3B1C2
         A4B1C2
         A1B2C2
         A2B2C2
         A3B2C2
         A4B2C2
         A1B3C2
         A2B3C2
         A3B3C2
         A4B3C2
         A1B1C3
         A2B1C3
         A3B1C3
         A4B1C3
         A1B2C3
         A2B2C3
         A3B2C3
         A4B2C3
         A1B3C3
         A2B3C3
         A3B3C3
         A4B3C3
         */
        int m=1;
        for(int j=0;j<xx.length;j++){
            for(int i=0;i<total;i++){
                int x=(int)Math.floor(i/m)%xx[j].length;
                /*
                每个组合i的第j个元素是xx[j]数组的中的一个值,
                关键是确定是xx[j]中的第几个元素,即x,仔细分析上面的组合,可以得出如上的计算公式
                 */
                xx2[i][j]=xx[j][x];
            }
            m*=xx[j].length;
        }
        for(String[] x:xx2){
            StringBuilder sb=new StringBuilder();
            for(String s:x){
                sb.append(s);
            }
            System.out.println(sb.toString());
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值