題目:從撲克牌中隨機抽5 張牌,判斷是否是一個順子,即這5 張牌是否是連續的。2-10 爲數字自己,A 爲1,J,爲11,Q 爲12,K 爲13,而大小王能夠當作任意數字。java
tip:將取出的5張牌排序並假定大小王爲0,則會出現三種狀況;數組
一、5張牌中沒有王,則5張牌的數字必須爲連續,即間隔爲0dom
二、5張牌中有一個王,則容許出現間隔爲1的狀況blog
三、5張牌中有兩個王,則容許出現間隔爲2的狀況排序
public static void main(String[] args) { Random random = new Random(); int[] array = new int[5]; for (int i = 0; i < array.length; i++) { array[i] = i + 10 * random.nextInt(1); } // 將數組排序,並假定大小王爲0 Arrays.sort(array); if (array[0] > 0) {// 5張牌中沒有王 checkGap(array, 0, 4, 0); } else if (array[0] == 0 && array[1] != 0) {// 5張牌有一個王 checkGap(array, 1, 4, 1); } else {// 5張牌有兩個王 checkGap(array, 2, 4, 2); } } /** *allowGap,可能出現的間隔數 */ private static void checkGap(int[] array, int start, int end, int allowGap) { int from = start; while (from < end) { allowGap -= array[from + 1] - array[from] - 1; if (allowGap < 0) { return; } from++; } }