`

java算法----纸牌的新建、洗牌与计数

    博客分类:
  • java
 
阅读更多
题目要求:

 * 新建一副牌,52张,4种花色,每一种都有13张
 * 随机洗牌
 * 每次顺序抽取两张,如果两张牌的牌面值想通过,记录一次
 * 直到抽完为止
 * 最后输出一共记录了多少次

Card.java代码如下:
package com.shuobaotang.interview;

public class Card {
	
	private  int number;//牌面值
	
	private String color;//牌面花色
	
	public Card(int number,String color){
		this.number = number;
		this.color = color;
	}

	public int getNumber() {
		return number;
	}

	public void setNumber(int number) {
		this.number = number;
	}

	public String getColor() {
		return color;
	}

	public void setColor(String color) {
		this.color = color;
	}
	
	@Override
	public String toString(){
		return number+":"+color;
	}
}



CountCards.java代码如下:

package com.shuobaotang.interview;

/**
 * 新建一副牌,52张,4种花色,每一种都有13张
 * 随机洗牌
 * 每次顺序抽取两张,如果两张牌的牌面值想通过,记录一次
 * 直到抽完为止
 * 最后输出一共记录了多少次
 * @author yangjianzhou
 *
 */
public class CountCards {
	
	public static void main(String[] args) {
		CountCards cc = new CountCards();
		Card[] cards = cc.createCards();
		Card[] cs = cc.refreshCards(cards);
		System.out.println(cc.getCount(cs));
	}

	public Card[] createCards(){
		Card [] cards = new Card[52];
		int i;
		for(i =1;i<=13;i++){
			Card card1 = new Card(i,"黑");
			Card card2 = new Card(i,"红");
			Card card3 = new Card(i,"梅");
			Card card4 = new Card(i,"方");
			cards[(i-1)*4]=card1;
			cards[(i-1)*4+1]=card2;
			cards[(i-1)*4+2]=card3;
			cards[(i-1)*4+3]=card4;
		}
		return cards;
	}

	public Card[] refreshCards(Card[] cards){
        int [] aa = new int[52];
        Card[] cs = new Card[52];
        int i;
        for(i=0;i<52;i++){
        	while(true){
            	int index = (int)(Math.random()*52);
            	if(aa[index]==0){
            		cs[i]=cards[index];
            		aa[index]=1;
            		break;
            	}	
        	}
        }
		return cs;
	}
	
	public int getCount(Card[] cards){
		int count =0;
		int i;
		for(i=0;i<52;i=i+2){
			Card card1 = cards[i];
			Card card2 = cards[i+1];
			if(card1.getNumber()==card2.getNumber()){
				count++;
				System.out.println(card1);
				System.out.println(card2);
				System.out.println("======================");
			}
		}
		return count;
	}
}



第一次运行结果:
6:黑
6:方
======================
12:方
12:梅
======================
2



第二次运行结果:

10:方
10:黑
======================
1

分享到:
评论

相关推荐

    行业分类-设备装置-游戏系统、纸牌、纸牌发牌盒及纸牌洗牌装置.zip

    综上所述,"行业分类-设备装置-游戏系统、纸牌、纸牌发牌盒及纸牌洗牌装置"这一主题涵盖了IT行业的多个层面,包括软件开发、硬件设计、算法应用、随机性生成以及人工智能技术。无论是数字游戏还是实体游戏,这些技术...

    算法-均分纸牌(信息学奥赛一本通-T1320)(包含源程序).rar

    《算法-均分纸牌(信息学奥赛一本通-T1320)》这个压缩包文件主要聚焦于算法的学习,特别与信息学奥林匹克竞赛相关的题目。信息学奥赛是针对青少年的一类竞赛,旨在提升他们的计算机编程和算法设计能力。在这样的...

    [Java算法-排序练习]计数排序.java

    该资源提供了在Java中如何实现计数排序的全面指南。文档涵盖了计数排序的基本概念,包括如何对数组进行排序以及如何在Java中实现计数排序。此外,文档还包括一个逐步指南,介绍了如何在Java中实现计数排序,包括详细...

    基本算法---计数.sb3

    基本算法---计数.sb3

    java实现国密算法gm-java-main.zip

    java实现国密算法gm-java-main.zip

    javacv-platform-1.3-bin.zip

    总的来说,JavaCV 1.3提供了一个跨平台的解决方案,将计算机视觉、音频视频处理的强大功能与Java的易用性相结合,大大降低了开发复杂视觉应用的门槛。通过这个`javacv-platform-1.3-bin.zip`压缩包,你可以快速地在...

    详解Java常用排序算法-计数排序

    Java 排序算法 - 计数排序 计数排序(Counting Sort)是一种非比较排序算法,它的基本思想是统计数组中每个元素出现的次数,然后根据元素出现的次数依次将元素放入有序的数组中。计数排序时间复杂度为 O(n+k),其中...

    Java排列组合算法 - 郭睿的专栏 - CSDN博客

    Java排列组合算法 - 郭睿的专栏 - CSDN博客Java排列组合算法 - 郭睿的专栏 - CSDN博客

    Java实现蜘蛛纸牌小游戏源码.zip

    游戏逻辑(如洗牌、发牌等)可能在一个独立的线程中执行,以避免阻塞UI。 5. **算法与数据结构**:蜘蛛纸牌游戏的规则涉及到排序、比较和移除等操作,这需要有效的算法和数据结构支持。例如,使用栈(Stack)来模拟...

    神经网络算法与实现-基于Java语言.zip

    神经网络算法与实现-基于Java语言神经网络算法与实现-基于Java语言神经网络算法与实现-基于Java语言神经网络算法与实现-基于Java语言神经网络算法与实现-基于Java语言神经网络算法与实现-基于Java语言神经网络算法与...

    java蜘蛛纸牌的实现

    - **游戏逻辑**: 需要实现蜘蛛纸牌游戏的所有规则,包括发牌、移牌、翻牌、洗牌等。 - **图形界面**: 设计用户友好的界面,显示牌堆、分数、游戏状态等信息。 - **数据库交互**: 可能需要记录用户的游戏进度、最高分...

    java蜘蛛纸牌源代码

    在这个Java蜘蛛纸牌项目中,源代码可能是由一系列类、方法和逻辑控制结构组成的,用于实现游戏的各种功能,如洗牌、发牌、移动牌堆等。Java是一种面向对象的编程语言,它以其跨平台性和强大的库支持而受到广大开发者...

    Java实现蜘蛛纸牌代码

    【Java实现蜘蛛纸牌代码】是一个典型的编程项目,它涉及到计算机科学中的游戏开发、图形用户界面(GUI)设计以及算法实现等多方面知识。蜘蛛纸牌是一款流行的经典单人纸牌游戏,通常由Windows系统内置,玩家需要通过...

    java-zhizhu.rar_蜘蛛纸牌

    【标题】"java-zhizhu.rar_蜘蛛纸牌" 提供的是一个使用Java编程语言实现的经典游戏——蜘蛛纸牌的源代码。蜘蛛纸牌是一款广受欢迎的单人纸牌游戏,其规则复杂且富有挑战性,对于学习编程和算法设计来说是一个很好的...

    Java代码-排序-直接插入排序、希尔排序、直接选择排序、冒泡排序、堆排序、快速排序、归并排序中部分排序以及算法-贪心法

    Java代码-排序-直接插入排序、希尔排序、直接选择排序、冒泡排序、堆排序、快速排序、归并排序中部分排序以及算法-贪心法,大家可以将源码下载下来进行学习,附带着注释和解释,有不理解的可以找博主一起探讨,共同...

    K-Means算法--Java实现

    在Java中实现K-Means算法,我们需要理解以下几个核心步骤和相关概念: 1. **初始化**:首先,我们需要选择K个初始质心(centroid),通常是随机选取数据集中的K个点作为初始中心。这些质心将成为簇的代表。 2. **...

    java-string-similarity, 各种字符串相似性和距离算法.zip

    java-string-similarity, 各种字符串相似性和距离算法 java-string-similarity 实现不同字符串相似度和距离度量的库。 目前已经实现了许多算法( 包括Levenshtein编辑距离和 sibblings,jaro winkler,最长公共子序列...

    JAVA---算法与数据结构

    在编程领域,尤其是Java开发中,数据结构与算法是核心基础,它们对于编写高效、优化的代码至关重要。数据结构是组织、存储和处理数据的方式,而算法是解决问题或执行特定任务的步骤序列。理解并掌握这两者对于成为一...

    蜘蛛纸牌(java源码)

    首先是洗牌和发牌,这可以通过随机数生成器完成,确保每局游戏的初始布局都不同。其次是拖放逻辑,这是游戏的核心部分,涉及到相邻列之间牌的合法移动判断。这里需要考虑牌的大小关系、花色匹配以及空列的处理。此外...

    算法 - Java-所有算法均用 Java 实现

    算法 - Java Build Discord chat Gitpod ready-to-code Open in Gitpod 您可以运行和编辑算法,或者只需单击一下即可使用 Gitpod.io(免费的在线开发环境)为算法做出贡献。 算法: 我们的目录包含完整的应用程序...

Global site tag (gtag.js) - Google Analytics