首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

关于VC++ 数组排序算法

2012-02-12 
求助 关于VC++ 数组排序算法请问各位高手如果我有个数组比如intNum[10]{1,1,1,2,2,3,4,4,5,5}或者里面是{

求助 关于VC++ 数组排序算法
请问各位高手
        如果我有个数组比如
        int   Num[10]={1,1,1,2,2,3,4,4,5,5}
        或者里面是{1,4,5,9,4,6,3,2,4,7}  
   
        通过排序   要求它得出来得结果像麻将那样
        3个数是连续或则一样的.
        不知道各位高手有没有好点的算法   我用了很多方法   都不成功
   
        谢谢

[解决办法]
楼主是想达到什么目的?判断听牌?还是胡牌?判断全部组合的话太累了,也没有必要^_^
[解决办法]
无论如何,先排序(用multiset),或者hash(用hash_multiset),或者用计数器(一个数组即可,出现一次K值,就记录在下标为K的元素中,也可用一个map存储记数器元素)。使用哪一种将影响具体地代码,但不影响思路。

然后,用制定的模式一次一次的尝试。如三条(恕我不会麻将术语,以纸牌代替)、以k起始的三连张等等……如果相互间有优先级,则按顺序来,每成功一次,计数器(假设是用计数器)做相应减法,再进入下一次测试;如果是平等选择,则分别测试,计数器先不变化,等结果出来,选择一种最佳的,再据此改变技术器,进入下一轮。如果是更复杂的组合最佳选择,也还是用计数器 "测试-选择-实行-下一轮 "的方式,只是每一步内容更多罢了。

这样,此问题就转化为“不同选择方式”的编码,而这已经和排序无关了。

热点排行