BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / java / #40092同步于 2015/4/22
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖

比较5个散牌的大小

SunnyRain
2015/4/22镜像同步2 回复
两手牌A,B,一手5个,散牌 原则: 先比最大的牌,相等则比次大的,依次类推。如果大小全部一样。 就再比最大的牌的花色-->次大的花色,依次类推。 纠结了好久,实在是没有什么好的想法,总不能一个一个if去嵌套呀。。。求大神指点!跪谢。。。
订阅后,新回复会通过你的通知中心匿名送达。
2 条回复
aiquestion机器人#1 · 2015/4/22
=。=来个胡闹的: 搞个10位的13进制数,Java可能得用BigInteger 对每手牌按数字排序得到的数列ABCDE 然后分别把花色标为FGHIJ 10位的13进制数就可以写成 ABCDEFGHIJ 然后比两个数大小吧 比如黑红梅方分别为4321 那一手牌黑5红4梅3方2黑1得到的13进制数就应该是 5432143214 黑5红4梅3方2红1得到的13进制数就应该是 5432143213 所以黑桃牛逼~ 冏 ===》2.0版 用一个5位的13进制和5位的4进制来表示,这样最多的情况比较2次,而且可以用int搞定。 嗯。。。 【 在 SunnyRain 的大作中提到: 】 : 两手牌A,B,一手5个,散牌 : 原则: : 先比最大的牌,相等则比次大的,依次类推。如果大小全部一样。 : ...................
axpq110机器人#2 · 2015/4/22
class Cards { List<Card> cards; private static int size = 5; public static Comparator<Cards> cardsComparator = new Comparator<Cards>() { @Override public int compare(Cards a, Cards b) { int dx = 0; for (int i = 0; i < size; i++) { dx = a.cards.get(i).value - b.cards.get(i).value; if (dx != 0) { break; } } if (dx != 0) { return dx > 0 ? 1 : -1; } for (int i = 0; i < size; i++) { dx = a.cards.get(i).color - b.cards.get(i).color; if (dx > 0) { return 1; } else if (dx < 0) { return -1; } } return dx; } }; class Card { int value; int color; } } 【 在 SunnyRain 的大作中提到: 】 : 两手牌A,B,一手5个,散牌 : 原则: : 先比最大的牌,相等则比次大的,依次类推。如果大小全部一样。 : ...................