`
longxingtx520
  • 浏览: 18367 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
最近访客 更多访客>>
社区版块
存档分类
最新评论

斗地主最大顺子查找

J# 
阅读更多

 

package cn.longxingtx.number;

import java.util.ArrayList;

public class Straight {
	
	private int[] straight_arr;
	
	public int[] getStraight_arr() {
		return straight_arr;
	}

	public void setStraight_arr(int[] straightArr) {
		straight_arr = straightArr;
	}

	private void sort() {
		int a;
		for(int i = 0; i < straight_arr.length; i++) {
			for (int j = i+1; j < straight_arr.length; j++) {
				if(straight_arr[i] > straight_arr[j]) {
					a = straight_arr[i];
					straight_arr[i] = straight_arr[j];
					straight_arr[j] = a;
				}
			}
		}
	}
	
	public ArrayList<Integer> straightArray(int _num) {
		sort();
		ArrayList<Integer> list = getStraight(_num);
		return list;
	}
	
	private ArrayList<Integer> getStraight(int _num) {
		ArrayList<Integer> arraylist = new ArrayList<Integer>();
		ArrayList<Integer> arraylist2 = new ArrayList<Integer>();
		int num = _num;
		int k = 0;
		
		int size = 5;
		if(num == 1) {
			size = 5*num;
		} else if(num == 2) {
			size = 3*num;
		} else if(num == 3) {
			size = 2*num;
		}
		for (int i = 0; i < straight_arr.length; i++) {
			if(i == 0) {
				arraylist.add(straight_arr[i]);
				k ++;
			} else {
				if(k == num) {
					if(straight_arr[i] == straight_arr[i - 1]) {
						continue;
					} 
					if(straight_arr[i] != straight_arr[i - 1] + 1) {
						if(arraylist.size() >= size && arraylist2.size() < arraylist.size()) {
							arraylist2.clear();
							arraylist2.addAll(arraylist);
						}
						arraylist.clear();
					}
					arraylist.add(straight_arr[i]);
					k = 1;
				} else {
					if(straight_arr[i] != straight_arr[i - 1]) {
						for(int m = 0; m < k; m++) {
							arraylist.remove(arraylist.size() - 1);
						}
						if(arraylist.size() >= size && arraylist2.size() < arraylist.size()) {
							arraylist2.clear();
							arraylist2.addAll(arraylist);
						}
						arraylist.clear();
						k = 0;
					}
					arraylist.add(straight_arr[i]);
					k ++;
				}
			}
		}
		return arraylist2;
	}
	
	public static void main(String[] args) {
		Straight st = new Straight();
		int[] array = {1, 2, 5, 3, 4, 3, 2, 2, 8, 9, 5, 6, 12, 13, 6, 8, 9, 4, 5, 7, 2, 7, 9, 11, 13, 5, 6, 7};
		st.setStraight_arr(array);
		System.out.println(st.straightArray(1));
		System.out.println(st.straightArray(2));
		System.out.println(st.straightArray(3));
	}
	
}
分享到:
评论

相关推荐

    斗地主-java开发

    3. **集合框架**:Java集合框架用于存储和操作大量牌数据,如ArrayList用于创建牌堆,HashMap用于快速查找特定牌型。 4. **事件驱动编程**:GUI(图形用户界面)的实现往往基于事件驱动模型,用户操作(如点击出牌...

    斗地主VC源码,适合学习使用

    - **牌型规则**:源码中包含了斗地主的基本牌型,如单张、对子、连对、三张、三带一、三带二、飞机、顺子、炸弹等。你需要了解如何定义和判断这些牌型。 - **出牌策略**:游戏的核心是AI算法,源码可能包含简单的...

    数据结构课程设计——斗地主代码

    这需要对所有可能的牌型(单张、对子、三张、顺子、飞机、炸弹等)有深入的理解,并编写相应的判断函数。同时,还需要实现出牌顺序的控制,如地主先出牌,然后按逆时针方向轮流出牌。 为了使游戏运行流畅,可以使用...

    C++斗地主程序

    7. **排序与算法**:游戏中可能需要对牌进行排序(如洗牌)或者查找特定的牌组合(如炸弹或顺子)。这需要用到排序算法(如快速排序、冒泡排序)和查找算法(如二分查找)。 8. **条件语句与循环**:判断玩家是否能...

    斗地主c实现

    牌型包括单张、对子、三张、三带一、顺子、飞机、炸弹等。每个玩家出牌后,需要检查其他玩家是否能接牌,若不能接牌,则轮到下一位玩家。这里可以使用递归或循环来实现。 五、得分计算与游戏结束 当某一方的牌全部...

    java模拟斗地主的洗牌发牌.rar

    HashMap是一个无序的键值对集合,它的特点是查找和插入速度非常快,因为它是基于哈希表实现的。在这个模拟游戏中,牌的值作为键(Key),而对应的对象可以是自定义的扑克牌类实例,包含牌的花色和点数信息。 其次,...

    斗地主源码

    1. 游戏逻辑:斗地主源码的核心部分是游戏逻辑,这涉及到牌型的判断(如顺子、对子、炸弹等)、出牌规则、得分计算等。开发者需要严谨地定义每种牌型,并编写相应的算法来判断玩家出牌的合法性。 2. 界面设计:游戏...

    斗地主游戏VC++源代码

    例如,如何判断一个玩家是否可以出牌、怎样确定牌型(顺子、对子、三张、炸弹等)、如何计算胜者分数等。 2. **用户界面**:VC++提供了MFC(Microsoft Foundation Classes)库,用于创建图形用户界面。源代码中会有...

    斗地主代源码

    接着,通过编程实现“叫地主”、“抢地主”等环节,以及各种出牌规则,如单张、对子、顺子、飞机、炸弹等。在判断输赢时,要考虑到各种可能的出牌组合和牌型,实现复杂的游戏逻辑。 2. **用户界面设计**: 自定义...

    ddzlib:斗地主牌库(含癞子和机器人)

    斗地主牌库(含癞子和机器人) 牌库 54张牌,其中有一个面值的牌是癞子,也就是有4张癞子。 牌库实现功能 分析所有牌型(包含癞子的情况),如顺子,三带,飞机带翅膀,炸弹等等。 查找指定牌型。 查找比指定牌型大...

    易语言-new斗地主牌型判断5易语言

    接着,程序会查找连续的五张牌,以确认是否有顺子;如果以上条件都不满足,它会查找对子和单张。在每个判断环节,都需要考虑到各种组合的可能性,确保不会漏掉任何一种可能的牌型。 在图形图像源码的标签下,我们...

    NOIP2015提高组解题报告

    无自环,N最大为200000。 **解题说明**: - **30 分做法**:使用Floyd算法查找最小环。 - **60 分做法**:对每个节点进行一次BFS遍历。 - **100 分做法**: 1. 对于基环+内向树的结构,可以直接应用模板找到环。 ...

    简单发牌,判断牌型,比较大小的实现(算法)

    这些算法可以帮助我们构建一个简单的扑克游戏模拟器,例如德州扑克或者斗地主。下面我们将详细探讨这三个方面的算法实现。 首先,我们要实现“发牌算法”。在扑克游戏中,一副牌通常包含52张牌,去掉了大小王。我们...

    java 扑克牌游戏

    斗地主的规则包括如何叫分、出牌顺序、炸弹、顺子、飞机等特殊牌型,以及如何判断胜负。这需要开发者具备清晰的逻辑思维和严谨的编程习惯。 6. **异常处理**:在游戏过程中,可能会遇到各种预期外的情况,如非法出...

    扑克牌程序

    例如,我们可以编写一个方法来检查牌堆中是否存在某个点数或花色的牌,或者查找特定的扑克牌组合,如顺子或同花顺。 排序扑克牌则可以使用Java的内置排序方法`Collections.sort()`,它会自动调用`Card`类的`...

    自动发牌问题.zip

    - 检查特殊组合涉及到遍历玩家的手牌,查找特定模式。例如,对于顺子,需要检查是否有连续的五张牌;对于三带二,需要寻找三个相同的牌并检查是否有另外两张匹配的牌;对于同花顺,需要同时检查花色和数值顺序;...

    扑克牌模块1.0.rar

    这种数据结构设计使得对扑克牌的操作变得简单直观,例如比较牌的大小、查找特定牌等。 2. **洗牌算法**:该模块内置了高效的洗牌算法,确保每次洗牌后的牌序都是随机且不可预测的。这在多人在线游戏中尤为重要,...

Global site tag (gtag.js) - Google Analytics