引入进制概念解决排列组合问题

本文介绍了一种使用九进制数遍历1-9数字的所有排列组合的方法,相较于传统的多层for循环,该方法大大减少了代码量。

友情链接
在程序中很多时候都需要进行遍历数据,当遇到排列组合问题时最常见的解决办法就是多层循环遍历。但是这中方法在有时好像并不轻松。

比如求9位1-9数字排列组合的所有解时,要用for循环遍历所有解的话需要写9层for循环。循环的此数为9^9.这样写起来过于繁琐,我们可用引入进制的概念进行遍历。

比如1-9共9个数字可用采用9进制(满9进1),这样一个排列组合的情况可用用9位9进制的数进行表示,每一位(0-8)分别代表(1-9),这样一个循环就能遍历这个排列组合的所有情况

 for(int i=0;i<9*9*9*9*9*9*9*9*9;i++){
    String num = "";
    int currtNum=i;
    for(int j=0;j<9;j++){
        num+=(currtNum%9+1);
        currtNum=currtNum/9;
    }
    syso(num);
}

虽然计算的次数并没有减少,但是遍历时的代码量大大的减少了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值