当前位置:编程学习 > C/C++ >>

空间换时间

最近做的一个小工具,要将斗地主的扑克牌从大到小排列,花色按黑>红>梅>方

也就是,大王,小王,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语言 ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,