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));
}
}
分享到:
相关推荐
3. **集合框架**:Java集合框架用于存储和操作大量牌数据,如ArrayList用于创建牌堆,HashMap用于快速查找特定牌型。 4. **事件驱动编程**:GUI(图形用户界面)的实现往往基于事件驱动模型,用户操作(如点击出牌...
- **牌型规则**:源码中包含了斗地主的基本牌型,如单张、对子、连对、三张、三带一、三带二、飞机、顺子、炸弹等。你需要了解如何定义和判断这些牌型。 - **出牌策略**:游戏的核心是AI算法,源码可能包含简单的...
这需要对所有可能的牌型(单张、对子、三张、顺子、飞机、炸弹等)有深入的理解,并编写相应的判断函数。同时,还需要实现出牌顺序的控制,如地主先出牌,然后按逆时针方向轮流出牌。 为了使游戏运行流畅,可以使用...
7. **排序与算法**:游戏中可能需要对牌进行排序(如洗牌)或者查找特定的牌组合(如炸弹或顺子)。这需要用到排序算法(如快速排序、冒泡排序)和查找算法(如二分查找)。 8. **条件语句与循环**:判断玩家是否能...
牌型包括单张、对子、三张、三带一、顺子、飞机、炸弹等。每个玩家出牌后,需要检查其他玩家是否能接牌,若不能接牌,则轮到下一位玩家。这里可以使用递归或循环来实现。 五、得分计算与游戏结束 当某一方的牌全部...
HashMap是一个无序的键值对集合,它的特点是查找和插入速度非常快,因为它是基于哈希表实现的。在这个模拟游戏中,牌的值作为键(Key),而对应的对象可以是自定义的扑克牌类实例,包含牌的花色和点数信息。 其次,...
1. 游戏逻辑:斗地主源码的核心部分是游戏逻辑,这涉及到牌型的判断(如顺子、对子、炸弹等)、出牌规则、得分计算等。开发者需要严谨地定义每种牌型,并编写相应的算法来判断玩家出牌的合法性。 2. 界面设计:游戏...
例如,如何判断一个玩家是否可以出牌、怎样确定牌型(顺子、对子、三张、炸弹等)、如何计算胜者分数等。 2. **用户界面**:VC++提供了MFC(Microsoft Foundation Classes)库,用于创建图形用户界面。源代码中会有...
接着,通过编程实现“叫地主”、“抢地主”等环节,以及各种出牌规则,如单张、对子、顺子、飞机、炸弹等。在判断输赢时,要考虑到各种可能的出牌组合和牌型,实现复杂的游戏逻辑。 2. **用户界面设计**: 自定义...
斗地主牌库(含癞子和机器人) 牌库 54张牌,其中有一个面值的牌是癞子,也就是有4张癞子。 牌库实现功能 分析所有牌型(包含癞子的情况),如顺子,三带,飞机带翅膀,炸弹等等。 查找指定牌型。 查找比指定牌型大...
接着,程序会查找连续的五张牌,以确认是否有顺子;如果以上条件都不满足,它会查找对子和单张。在每个判断环节,都需要考虑到各种组合的可能性,确保不会漏掉任何一种可能的牌型。 在图形图像源码的标签下,我们...
无自环,N最大为200000。 **解题说明**: - **30 分做法**:使用Floyd算法查找最小环。 - **60 分做法**:对每个节点进行一次BFS遍历。 - **100 分做法**: 1. 对于基环+内向树的结构,可以直接应用模板找到环。 ...
这些算法可以帮助我们构建一个简单的扑克游戏模拟器,例如德州扑克或者斗地主。下面我们将详细探讨这三个方面的算法实现。 首先,我们要实现“发牌算法”。在扑克游戏中,一副牌通常包含52张牌,去掉了大小王。我们...
斗地主的规则包括如何叫分、出牌顺序、炸弹、顺子、飞机等特殊牌型,以及如何判断胜负。这需要开发者具备清晰的逻辑思维和严谨的编程习惯。 6. **异常处理**:在游戏过程中,可能会遇到各种预期外的情况,如非法出...
例如,我们可以编写一个方法来检查牌堆中是否存在某个点数或花色的牌,或者查找特定的扑克牌组合,如顺子或同花顺。 排序扑克牌则可以使用Java的内置排序方法`Collections.sort()`,它会自动调用`Card`类的`...
- 检查特殊组合涉及到遍历玩家的手牌,查找特定模式。例如,对于顺子,需要检查是否有连续的五张牌;对于三带二,需要寻找三个相同的牌并检查是否有另外两张匹配的牌;对于同花顺,需要同时检查花色和数值顺序;...
这种数据结构设计使得对扑克牌的操作变得简单直观,例如比较牌的大小、查找特定牌等。 2. **洗牌算法**:该模块内置了高效的洗牌算法,确保每次洗牌后的牌序都是随机且不可预测的。这在多人在线游戏中尤为重要,...