0 0

今天面试遇到了雷人面试题求解_续集10

有52张扑克牌要随机发牌给四个玩家,并且四个玩家牌的数量是相同的? 用java语言写出来 http://www.iteye.com/topic/739333 代码方法如下 [code="java"][/code]

 

import java.util.HashMap;
import java.util.Map;
import java.util.Random;

import org.junit.Test;

/**
 * k代表红桃,黑桃,梅花,方片
 * @author Administrator
 *
 */
public class TestJavaEye {

	Map<String, Object> mp = new HashMap<String, Object>();
    int a = 0,b=1,c=2,d=3; //A,B,C,D  对应每一个人的牌
    int t = 1; 
	
	@Test
	public  void testinit(){ 
        //创建牌	
      	for(int w = 0;w<52;w++){
			if(w<13){
				
				mp.put(w+"","红桃:"+(13-w));
				//System.out.println(w+"<坐标......值>"+mp.get(w+""));
			}else
			if(w<26){			
				mp.put(w+"","黑桃"+(26-w));
				//System.out.println(w+"<坐标......值>"+mp.get(w+""));
			}else
			if(w<39){
				mp.put(w+"","梅花"+(39-w));
				//System.out.println(w+"<坐标......值>"+mp.get(w+""));
			}else{
				mp.put(w+"","方片"+(52-w));
				//System.out.println(w+"<坐标......值>"+mp.get(w+""));
			}
			}
        int length = mp.size(); 
        Random random = new Random(); 
        /**
         * 开始发牌
         */
        for (int i = 0; i < length; i++) 
        {
             	//0123
        		//52/4
            	//4567
            	if((i)%4==0){
            		System.out.println("----------------第"+t+"次发牌-----------------");
            		t++;
            	}
                int index =random.nextInt(length);    
                for(;mp.get(index+"")==null;){
                	index = random.nextInt(length);
                }
                if(i == a){
                	 System.out.println(a+"A拥有牌索引值:"+index+",牌值:"+mp.get(index+""));   
                 	a = a+4; 
                }
                if(i == b){
                	 System.out.println(b+"B拥有牌索引值:"+index+",牌值:"+mp.get(index+""));   
                 	b = b+4; 
                } 
                if(i == c){
                	
                	 System.out.println(c+"C拥有牌索引值:"+index+",牌值:"+mp.get(index+"")); 
                	 c = c+4; 
                } 
                if(i == d){
                	
                	 System.out.println(d+"D拥有牌索引值:"+index+",牌值:"+mp.get(index+""));  
                	 d = d+4; 
                } 
                mp.remove(index+""); 
                
        }
    }
	
}

 


问题补充:<div class="quote_title">skynet_java 写道</div><div class="quote_div"><img src="/images/smiles/icon_surprised.gif"/>&nbsp;<img src="/images/smiles/icon_redface.gif"/> </div> <br />什么?

问题补充:<div class="quote_title">kfc_davy 写道</div><div class="quote_div">等人~ing,无聊一记</div> <br /> <br /> <br />是别人的问题 我续&nbsp;&nbsp;<img src="/images/smiles/icon_redface.gif"/>
2010年8月18日 16:20

4个答案 按时间排序 按投票排序

0 0

等人~ing,无聊一记

2010年8月31日 19:26
0 0


package card;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Random;
import java.util.TreeMap;

import junit.framework.TestCase;

/**
 * 发牌 52张 a1-13 b1-13 c1-13 d1-13
 *
 */
public class FaPai  extends TestCase{

	private List cards ;
	
	private String[] colors = new String[]{"a","b","c","d"};
	private int num = 13;
	private int allCard = num*colors.length;
	
	private Map people ;
	
	private void createCard(){
		cards = new LinkedList();
		for(int i=0;i<colors.length;i++){
			for(int j=0;j<num;j++){
				cards.add(colors[i]+"|"+(j+1));
			}
		}
	}
	
	private void xipai(){
		
		int count = cards.size()*3;
		long seed = System.currentTimeMillis();
		for(int i=0;i<count;i++){
			int exchange = new Random(seed+=100).nextInt(allCard/2-1);
			//System.out.println(exchange);
			String card1 = (String) cards.get(exchange);
			String card2 = (String) cards.get(allCard-1-exchange);
			cards.set(exchange, card2);
			cards.set(allCard-1-exchange, card1);
			//System.out.println(cards);
		
		}
	}
	

	private void fapai() {
		people = new TreeMap();
		for(int i=0;i<4;i++){
			people.put(i+"", new ArrayList());	
		}
		
		for(int i=0;i<allCard;i++){
			((List)people.get(i%4+"")).add(cards.get(i));
		}
		
	}
	
	private void zhengli() {
		for(int i=0;i<4;i++){
			List l = (List) people.get(i+"");
			Collections.sort(l, new Comparator(){

				public int compare(Object o1, Object o2) {
					int a1 = Integer.parseInt(((String)o1).split("\\|")[1]);
					int a2 = Integer.parseInt(((String)o2).split("\\|")[1]);
					return a1>a2?1:-1;
				}
				
			});
		}
	}
	
	public void testFaPai() throws Exception {
		System.out.println("init");
		createCard();
		System.out.println(cards);
		
		System.out.println("xipai");
		xipai();
		System.out.println(cards);
		
		System.out.println("fapai");
		fapai();
		System.out.println(people);
		
		System.out.println("zhengli");
		zhengli();
		for(int i=0;i<4;i++){
			System.out.println(people.get(i+""));
		}
	}

}



2010年8月31日 19:25
0 0

什么意思啊,是让你写出来啊,还是让人帮你读懂啊!!

2010年8月20日 18:39
0 0

 

2010年8月20日 16:41

相关推荐

    codility_lessons_codility面试题python_源码.zip

    在面试题中,可能会遇到需要分析和操作字符串的问题。 5. **递归与分治策略** 分治策略是将问题分解为较小的子问题来求解,递归是其常见实现方式。Python 支持递归,但要注意防止栈溢出。在 Codility 题目中,递归...

    vcmianshi.rar_c++ thread_算法笔试面试_算法面试题_马戏团

    C++程序员面试、笔试经常遇到的一些算法示例集 pdf,相关内容:字符串匹配的KMP算法,括号匹配检测、求一个数组的最长递减字序列、一些数字题求解,输出一个字符串的所有组合,马戏团表演问题、Thread.sleep 与obj....

    剑指Offer(专项突破版)数据结构与算法名企面试题精讲1

    《剑指Offer(专项突破版)数据结构与算法名企面试题精讲1》是一本专为程序员面试准备的数据结构与算法指南。作者何海涛结合自身多年的面试官经验,深入探讨了程序员在面试中必须掌握的核心知识。本书旨在帮助读者...

    C++绝密面试题

    ### C++绝密面试题详解 #### 1. 求解整数中1的个数 题目描述:实现一个函数 `int func(int x)`,该函数返回输入整数 `x` 中二进制表示中1的个数。 **代码解析**: ```cpp int func(int x) { int count_x = 0; ...

    java面试题广州

    从给定的文件信息中,我们可以总结出一系列与Java面试相关的知识点,这些知识点不仅涵盖了基本的Java编程概念,还涉及...以上知识点覆盖了Java面试中可能遇到的各种技术领域,准备面试时应重点复习并熟练掌握这些内容。

    程序员面试经典算法题

    《程序员面试经典算法题》是针对程序员在面试过程中可能会遇到的算法问题进行深入解析的一份资源。这份资料旨在帮助程序员提升算法思维,从而在技术面试中脱颖而出。通过学习和掌握这些经典算法,不仅可以提高编程...

    程序员面试逻辑题

    根据提供的文件信息,本文将围绕“程序员面试逻辑题”这一主题进行深入探讨,解析与程序员面试相关的逻辑题目及其重要性,帮助求职者更好地准备面试。 ### 知识点一:理解程序员面试逻辑题的重要性 在程序员招聘...

    力扣面试经典150题力扣面试经典150题

    "力扣面试经典150题"是一系列精选的题目,旨在帮助面试者熟悉常见的面试问题,提升解决问题的能力。 在LeetCode中,面试经典150题主要分为以下几个类别: 1. **数组**:数组是最基础的数据结构,涉及到的问题包括...

    曾经遇到的一个c语言面试题

    这是一道经典的C语言面试题,主要考查应聘者对位运算的理解和掌握程度,以及优化算法效率的能力。以下是对这道题目的详细解析和相关知识点说明: 1. 位运算基础 位运算是一种对数据的二进制位进行操作的运算。在...

    最新2年经验的Java面试题

    ### 最新2年经验的Java面试题精析 在IT行业,尤其是软件开发领域,Java作为一门历史悠久且应用广泛的编程语言,其面试题往往能够反映出求职者对这门语言掌握的深度与广度。以下是对“最新2年经验的Java面试题”中...

    算法经典面试题

    算法经典面试题是IT面试中常见的部分,涉及到的数据结构和算法知识广泛,涵盖字符串处理、哈希表、排序、查找、动态规划等多个方面。以下是对这些面试题的详细解释: 1. **时针分针重合问题**: 这是一道关于时间...

    2020年腾讯精选面试题及答案

    首先,从标题“2020年腾讯精选面试题及答案”中可以看出,本文所涉及的知识点是针对腾讯公司招聘过程中可能出现的面试题目。描述中提到这是2020年的精选面试题,并暗示了可以通过加入特定QQ群获取更多相关面试题目和...

    编程风格面试题 数据结构

    本话题将围绕“编程风格面试题 数据结构”这一主题,深入探讨在面试中常见的数据结构相关问题,以及如何用C++/C来解决这些问题。 一、基本数据结构 1. 数组:数组是最基础的数据结构,它是一系列相同类型元素的...

    BAT机器学习面试1000题系列

    ### BAT机器学习面试1000题系列知识点详解 #### 1. 归一化为何能提高梯度下降法求解最优解的速度? 归一化技术可以显著改善梯度下降法在训练机器学习模型时的表现。主要原因在于: - **解决尺度差异**:特征之间...

    微软面试题.txt(牛逼人看看)

    根据提供的文件信息,我们可以梳理出以下关键知识点,主要围绕微软面试题目进行展开: ### 1. 资源分配问题 **题目描述:** - 有一堆石头,每块石头可以对应一个数值(例如12345),当两块石头同时被拿起时,其...

    腾讯java 面试题

    ### 腾讯Java面试题解析:应对NP完全问题及寻找小顶点覆盖 #### 应对NP完全问题 在IT行业中,面对NP完全问题时,我们常常会遇到理论与实践之间的矛盾。按照理论,NP完全问题是很难找到多项式时间算法解决的。然而...

    asp.net 面试题

    这里我们来详细探讨一下ASP.NET面试中可能会遇到的一些知识点。 1. **表达式求值**: 1-2+3-4+……+m的求解可以采用循环或递归的方法。在C#中,可以使用`for`循环,每次迭代累加奇数项(正数)和偶数项(负数),...

Global site tag (gtag.js) - Google Analytics