升级游戏中,如何判断一轮中那个玩家出的牌大?!!!!求算法! 蠢怕什么先实现了, 慢慢再 refact 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 可以加一个标记;例如:红桃是主 定义标记nflag = -1;先判断一下是否为主 忘了不少规则,权当抛砖引玉吧.public static int compare(Hand h1, Hand h2) { if(h1.isTractor() && h2.hsTractor()) return compareTractor(h1,h2); else ... }public static int compareTractor(Hand h1, Hand h2) { if(h1.isTrump()) { if(h2.isTrump()) { if(h1.trackorLen() != h2.trackorLen()) return h1.trackorLen() - h2.trackorLen(); return (h1.leastCard() - h2.leastCard()); } return 1; // h2 is not trump }else { if(h2.isTrump()) { return 1; // neither is trump for(int i = 13; i > 1; i--) { if(h1.isTractor(i) && !h2.isTractor(i)) return 1; if(!h1.isTractor(i) && h2.isTractor(i)) return -1; if(h1.isTractor(i) && h2.isTractor(i)) return h1.leastCard() - h2.leastCard(); }}Class Hand { public int[] card; public int num; // 22,33,44---> 2 222,333,444--->3 public int leastCard() { return card[0]; } public int tractorLen() { return card.length; } public boolean isTractor(int i) { return num == i; {} helpall() 老大,能稍微讲一下思路么?^_^ 我也是这么考虑的,但是会遇到混合的情况,如一个家伙出2托+1对。另一个人出3托,就会出现一个拆分第二个人拖拉机的问题。光是把一手牌按拖拉机分类就挺烦的。我的card类的一个对象就是一张牌记录:花色,点数,大小(当决定什么是主,打几的时候,分配大小)。我可以通过两对牌的大小值之差为1,判断是一个拖拉几(在这之前还要先把一手牌中的对先挑出),越写越烦,写了n行,最后还发现写错了,郁闷 如一个家伙出2托+1对。另一个人出3托,就会出现一个拆分第二个人拖拉机的问题。用第一个家伙出的格式,递归判断第二家是否匹配语言描述如下方法:是否匹配参数:Hashtable,记录每个类型的牌有几个,牌型为key,个数为value Collection,欲匹配的牌实现: 在Collection中找Hashtaqble中最复杂的排的个数,有的话取最大的与之匹配,没有返回 调用自己,把比较过的牌和牌型去掉 最后可以返回最复杂牌的最大牌的面值 基于JMF的视频播放器设计与实现 毕业设计 java开发工具用什么好? 有哪些MyEclipse6.0 的插件,最好有分页得插件!!! 不输入数据时,为什么关不了程序 接口是怎样现实多继承的? 抽象类的问题 请高手帮忙! JSP问题(50分) 线程里面的join函数的作用 请问下面的程序为什么编译不能通过呢? 短信問題 在JAVA中如何PING IP地址 在线等候
先判断一下是否为主
public static int compare(Hand h1, Hand h2) {
if(h1.isTractor() && h2.hsTractor())
return compareTractor(h1,h2);
else
...
}public static int compareTractor(Hand h1, Hand h2) {
if(h1.isTrump()) {
if(h2.isTrump()) {
if(h1.trackorLen() != h2.trackorLen())
return h1.trackorLen() - h2.trackorLen();
return (h1.leastCard() - h2.leastCard());
}
return 1; // h2 is not trump
}else {
if(h2.isTrump()) {
return 1;
// neither is trump
for(int i = 13; i > 1; i--) {
if(h1.isTractor(i) && !h2.isTractor(i))
return 1;
if(!h1.isTractor(i) && h2.isTractor(i))
return -1;
if(h1.isTractor(i) && h2.isTractor(i))
return h1.leastCard() - h2.leastCard();
}
}Class Hand {
public int[] card;
public int num; // 22,33,44---> 2 222,333,444--->3
public int leastCard() {
return card[0];
}
public int tractorLen() {
return card.length;
}
public boolean isTractor(int i) {
return num == i;
{
}
如一个家伙出2托+1对。另一个人出3托,就会出现一个拆分第二个人拖拉机的问题。
光是把一手牌按拖拉机分类就挺烦的。我的card类的一个对象就是一张牌
记录:花色,点数,大小(当决定什么是主,打几的时候,分配大小)。
我可以通过两对牌的大小值之差为1,判断是一个拖拉几(在这之前还要先把一手牌中的对先挑出),越写越烦,写了n行,最后还发现写错了,郁闷
用第一个家伙出的格式,递归判断第二家是否匹配
语言描述如下
方法:是否匹配
参数:Hashtable,记录每个类型的牌有几个,牌型为key,个数为value
Collection,欲匹配的牌
实现:
在Collection中找Hashtaqble中最复杂的排的个数,有的话取最大的与之匹配,没有返回
调用自己,把比较过的牌和牌型去掉
最后可以返回最复杂牌的最大牌的面值