空间换时间
最近做的一个小工具,要将斗地主的扑克牌从大到小排列,花色按黑>红>梅>方
也就是,大王,小王,2,A,K,Q,J,10….3这样的顺序,
假设你现在有一手牌该如何排列?
我的做法是,定义一个数组,数组内保存了需要排列的顺序,也就是:
大王,小王,黑桃2,红桃2,梅花2,方块2,黑桃A,红桃A,梅花A,方块A———->黑桃3,红桃3,梅花3,方块3
然后从遍历这个数组,和手上的牌对比,如果存在则打印.
大致代码如下
#define TOTAL_CARDS (54)
/* 牌信息定义
int CardInfo[TOTAL_CARDS]
{
0,1,2,3,4,5,6,7,8,9,10,11,12, //黑桃的A–K
13,14,15,16,17,18,19,20,21,22,23,24,25, //红桃A–K
26,27,28,29,30,31,32,33,34,35,36,37,38, //梅花A–K
39,40,41,42,43,44,45,46,47,48,49,50,51, //方块A–K
52,53 //小王大王
};
*/
/*用于排序的数组*/
int SortedCard[TOTAL_CARDS]={
53,52, // 大王,小王
1,14,27,40, // 2
0,13,26,39, //A
2,15,28,41, //3
3,16,29,42, //4
4,17,30,43, //5
5,18,31,44, //6
6,19,32,45, //7
7,20,33,46, //8
8,21,34,47, //9
9,22,35,48, //10
10,23,36,49, //J
11,24,37,50, //Q
12,25,38,51 //K
};
// getUserCards();
for (int i=0; i
{
if ( 0!= CardInfo[SortedCard[i]] )
{
printf( “%d,”,CardInfo[SortedCard[i]] );
}
}
补充:软件开发 , C语言 ,