一種方法是遍歷每個可能卡,又算什麼呢出現了多少次:
int suit;
for (suit = 0; suit < 4; suit++) {
int rank;
for (rank = 0; rank < 13; rank++) {
int count = 0;
int card;
for (card = 0; card < 5; card++) {
count += cards[card][suit][rank];
}
if (count > 1)
return 1;
}
}
return 0;
但是,您所選擇的數據結構不是很高效。要了解卡N是什麼,你需要通過所有的cards[N][0..3][0..12]
搜索找到1.更好的方法是使用一個struct
:
struct card {
int suit; /* 0..3 */
int rank; /* 0..12 */
};
struct card cards[5];
這將是一個更容易的工作。例如,要查找重複,你只需要檢查是否有任何其他卡具有相同的rank
和suit
值:
int card1, card2;
for (card1 = 0; card1 < 5; card1++)
for (card2 = card1 + 1, card2 < 5; card2++)
if (cards[card1].suit == cards[card2].suit && cards[card1].rank == cards[card2].rank)
return 1;
return 0;
來源
2010-12-09 00:45:45
caf
下面是我的一個想法: card1:cards [1] [3] [7], card3:cards [3] [3] [7]。 他們是不同的卡,但他們是相同的。 – Jerry 2010-12-09 00:48:56