91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

java如何遍歷m取n的所有組合

發布時間:2021-11-30 16:02:19 來源:億速云 閱讀:252 作者:小新 欄目:編程語言

這篇文章將為大家詳細講解有關java如何遍歷m取n的所有組合,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

 示例:

  * 求m取n的所有組合。

  * m個數分別為0,1,2...m-1.

  * 算法簡述:

  *   二個組合,若僅有元素順序不同,視其為同一個組合。

  *   左位系低位,右位系高位。

  *   按自然的取法取第一個組合(各數位分別是:0,1,2...n-1),以后的所有組合都經上一個組合變化而來:

  *   從右至左,找到有增量空間的位,將其加1,使高于該位的所有位,均比其左鄰位大1,從而形成新的組合。

  *   若所有位均無增量空間,說明所有組合均已被遍歷。

  *   使用該方法所生成的組合數中:對任意組合int[] c,下標小的數必定小于下標大的數.

  *


*/
public class Combination {
int n, m;
int[] pre;//previous combination.
public Combination(int n, int m) {
this.n = n;
this.m = m;
}
/**
* 取下一個組合。可避免一次性返回所有的組合(數量巨大,浪費資源)。
* if return null,所有組合均已取完。
*/
public int[] next() {
if (pre == null) {//取第一個組合,以后的所有組合都經上一個組合變化而來。
pre = new int[n];
for (int i = 0; i < pre.length; i++) {
pre = i;
}
int[] ret = new int[n];
System.arraycopy(pre, 0, ret, 0, n);
return ret;
}
int ni = n - 1, maxNi = m - 1;
while (pre[ni] + 1 > maxNi) {//從右至左,找到有增量空間的位。
ni--;
maxNi--;
if (ni < 0)
return null;//若未找到,說明了所有的組合均已取完。
}
pre[ni]++;
while (++ni < n) {
pre[ni] = pre[ni - 1] + 1;
}
int[] ret = new int[n];
System.arraycopy(pre, 0, ret, 0, n);
return ret;
}
}

關于“java如何遍歷m取n的所有組合”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

宣汉县| 元谋县| 图片| 丰宁| 安塞县| 灵宝市| 馆陶县| 绥阳县| 福鼎市| 堆龙德庆县| 昭苏县| 河南省| 佛坪县| 青河县| 五常市| 上栗县| 新邵县| 谢通门县| 博客| 锡林郭勒盟| 偃师市| 白玉县| 正宁县| 合山市| 紫金县| 东丰县| 恭城| 丹寨县| 遂溪县| 五指山市| 临江市| 同仁县| 吉首市| 沁水县| 盐池县| 微山县| 甘泉县| 濉溪县| 攀枝花市| 富裕县| 菏泽市|