題目:從撲克牌中隨機抽5張牌,判斷是不是乙個順子,即這5張牌是不是連續的。2-10為數
字本身,a為1,j為11,q為12,k為13,而大小王可以看成任意數字。
分析:把大小王定義為0,可以替換任意數字。
首先把陣列排序,再統計陣列中0的個數,最後統計排序之後的陣列中相鄰數字之間的空缺總數。
如果空缺的總數小於或等於0的個數,那麼這個陣列就是連續的;反之則不連續。
如果出現相鄰數字相等,則不連續,對子一定不是順子
#includeusing namespace std;
int compare(const void *a,const void *b)
bool iscontinuous(int *data,int length)
// ********************測試**********************
void test(char* testname, int* numbers, int length, bool expected)
void test1()
; test("test1", numbers, sizeof(numbers) / sizeof(int), true);
}void test2()
; test("test2", numbers, sizeof(numbers) / sizeof(int), false);
}void test3()
; test("test3", numbers, sizeof(numbers) / sizeof(int), true);
}void test4()
; test("test4", numbers, sizeof(numbers) / sizeof(int), false);
}void test5()
; test("test5", numbers, sizeof(numbers) / sizeof(int), true);
}void test6()
; test("test6", numbers, sizeof(numbers) / sizeof(int), false);
}void test7()
; test("test7", numbers, sizeof(numbers) / sizeof(int), true);
}void test8()
; test("test8", numbers, sizeof(numbers) / sizeof(int), false);
}void test9()
; test("test9", numbers, sizeof(numbers) / sizeof(int), true);
}void test10()
; test("test10", numbers, sizeof(numbers) / sizeof(int), true);
}// 有對子
void test11()
; test("test11", numbers, sizeof(numbers) / sizeof(int), false);
}// 魯棒性測試
void test12()
int main(int argc, char* argv)
劍指offer(44)撲克牌順子
19.2.27 題目描述 ll今天心情特別好,因為他去買了一副撲克牌,發現裡面居然有2個大王,2個小王 一副牌原本是54張 他隨機從中抽出了5張牌,想測測自己的手氣,看看能不能抽到順子,如果抽到的話,他決定去買體育彩票,嘿嘿!紅心a,黑桃3,小王,大王,方片5 oh my god 不是順子 ll不高...
劍指offer 撲克牌順子
ll今天心情特別好,因為他去買了一副撲克牌,發現裡面居然有2個大王,2個小王 一副牌原本是54張 他隨機從中抽出了5張牌,想測測自己的手氣,看看能不能抽到順子,如果抽到的話,他決定去買體育彩票,嘿嘿!紅心a,黑桃3,小王,大王,方片5 oh my god 不是順子.ll不高興了,他想了想,決定大 小...
劍指offer 撲克牌順子
劍指offer 撲克牌順子.cpp 定義控制台應用程式的入口點。題目描述 輸入五個數字,0可以代表任何數,問這五個數字是否是乙個順子 思路 排序後計算非0的相鄰兩個數之間的距離 gap 然後與0 大小王 的數量進行比較,看是否小於這個count include stdafx.h include ve...