Java 关于扑克牌的算法

问题描述

在面试中被问到的算法题,不知道如何回答,请各位大侠帮帮忙~~再次谢谢了!1.有54张扑克牌,使用什么算法能最优的平均分个3个人并且分到的牌比较均匀。不能使用Random。。2.100个数,把99个数存储到同个数组中,使用什么算法能最快的找出没有被存储到数组的那个数?

解决方案

解决方案二:
1.个人感觉还是再问下面试官什么叫最优的平均分。。。2.把100个数求和再遍历数组一次,做减法就行了或者hash
解决方案三:
1.这个可以用吧intid=(int)(System.currentTimeMillis()%54);2.100个数中有没有重复数?
解决方案四:
路过接分!!!!!!!!!!!!!!!!!!!!!
解决方案五:
//2/**产生坠机数*/staticjava.util.Randomrand=newjava.util.Random();publicstaticvoidmain(String[]args){int[]t1=newint[100];for(inti=0;i<100;i++){t1[i]=i+100;}rand(t1);printf(t1);int[]t2=newint[99];System.arraycopy(t1,0,t2,0,t2.length);rand(t2);printf(t2);System.out.println("原数:"+t1[t1.length-1]);intre=find(t1,t2);System.out.println("找到:"+re);}/**解*/publicstaticintfind(int[]t1,int[]t2){if(t1.length<t2.length){int[]buf=t1;t1=t2;t2=buf;}intre=t1[t1.length-1];for(inti=t2.length-1;i>-1;i--){re+=t1[i]-t2[i];}returnre;}/**将da随机排列*/staticvoidrand(int[]da){for(inti=da.length-1,j;i>1;i--){//随机排列j=rand.nextInt(i);da[i]^=da[j];//交换值da[j]^=da[i];da[i]^=da[j];}}/**打印,显示用*/staticvoidprintf(int[]da){System.out.print("[");for(inti=0;i<da.length;i++){System.out.print(da[i]);if(i<da.length-1){System.out.print(",");}else{System.out.println("]");}}}

解决方案六:
///忘记帖结果了,遍历一次就可以找到了/**run:[167,149,123,153,168,121,133,105,162,117,140,169,109,195,128,110,104,159,164,112,178,130,174,170,137,187,147,173,143,180,132,134,120,114,150,197,142,146,118,113,151,165,148,141,183,172,186,138,185,190,108,136,116,139,198,166,191,102,124,145,158,107,177,122,160,182,126,152,115,181,144,189,125,135,161,156,119,193,155,175,199,131,171,129,127,106,103,100,194,157,163,184,101,188,176,196,192,154,111,179][143,146,109,120,148,186,103,153,159,139,176,102,184,160,135,177,157,119,156,122,131,132,101,124,190,111,185,163,154,194,181,125,173,129,174,191,106,189,187,195,196,164,170,171,180,188,112,169,126,175,130,108,198,152,128,123,168,113,166,165,178,162,149,115,150,193,107,151,118,192,145,147,172,104,182,100,183,167,199,127,114,197,142,137,121,105,144,110,138,155,134,117,116,140,133,136,141,161,158]原数:179找到:179成功生成(总时间:0秒)*/

时间: 2024-07-31 16:43:43

Java 关于扑克牌的算法的相关文章

java-求一个Java实现的卡尔曼滤波算法

问题描述 求一个Java实现的卡尔曼滤波算法 现在做一个无线的定位系统,求一个Java实现的卡尔曼滤波算法 解决方案 参考:http://blog.csdn.net/ouyang_linux007/article/details/7563998http://download.csdn.net/detail/daibinok2008/4175968 解决方案二: https://code.google.com/p/efficient-java-matrix-library/wiki/KalmanF

java版本的冒泡算法

算法 /**文件名:MaoPao.java描述: java版本的冒泡算法作者:慈勤强Email:cqq1978@Gmail.com**/ class MaoPao{ public static void test1() //最普通的冒泡算法,需要比较(n-1)*(n-1)次 { int[] iArray={10,5,2,3,321,76,3221,98,86,39}; int k=0; int icount=0; for(int j=0;j<iArray.length-1;j++) { for(

Java实现二分查找算法实例分析_java

本文实例讲述了Java实现二分查找算法.分享给大家供大家参考.具体如下: 1. 前提:二分查找的前提是需要查找的数组必须是已排序的,我们这里的实现默认为升序 2. 原理:将数组分为三部分,依次是中值(所谓的中值就是数组中间位置的那个值)前,中值,中值后:将要查找的值和数组的中值进行比较,若小于中值则在中值前面找,若大于中值则在中值后面找,等于中值时直接返回.然后依次是一个递归过程,将前半部分或者后半部分继续分解为三部分.可能描述得不是很清楚,若是不理解可以去网上找.从描述上就可以看出这个算法适合

java 编程-JAVA实现距离矢量算法

问题描述 JAVA实现距离矢量算法 1.编程实现右图所示简单网络拓扑的距离向量路由算法. 1.1 结点之间的连接关系固定: 1.2 链路开销可以由用户设定. 2.距离向量算法的实现方式: 2.1 可以利用多线程机制:每个结点一个 线程:每隔一段事件利用线程间通信 机制传递距离向量(DV):或是 2.2 每个结点利用单独的进程实现:每隔一 段时间利用Socket实现结点间的距离向量交换: 2.3 距离向量的计算与结点路由表的显示. 3.网络拓扑结构的描述(数据结构),拓扑结构利用文件存储. 4.结

java虚拟机-java 垃圾回收 Mark-and-Compact 算法 去碎片如何操作堆中内存的

问题描述 java 垃圾回收 Mark-and-Compact 算法 去碎片如何操作堆中内存的 在压缩堆内存阶段,遍历堆中所有对象并将存活对象重新放入连续的内存地址的 过程中,如果某个存活对象即将放入的地址中存有另一个还没有被移动的存活的对象, java jvm如何进行操作呢? 我看的算法中没有给此方面的信息.它只说存活对象放入 连续的堆中! 大神!!!!求助!!!!!!!!!

java-求:Java实现下面的算法,要求尽量高的性能

问题描述 求:Java实现下面的算法,要求尽量高的性能 算法要求:把下面两个list: columnNames list: [""Comment""Comment""Cost""Term""Cost""] columnValues list: [""my comment 1""my comment 2""my cost 1&qu

退火算法-java最优组合算法问题,编程实现字母最优组合生成最优解

问题描述 java最优组合算法问题,编程实现字母最优组合生成最优解 要求:输入A~K中的任意几个字母(无重复),对这些字母进行组合.输出最优组合的最小组数n和组合方案,使用java语言. 约束条件:A可以和B一组: A可以和E.F.G一组: C.D.H要单独分组: I可以和E.F.G一组: J可以和E.F.G一组: K可以和E.F.G一组: 如果可以,希望用退火算法的思想来解决本问题.毕设赶着要用这个算法,希望尽快提供解决方案,拜谢! 解决方案 两两组合,还是可以多个组合? 解决方案二: 必须是

关于java的数据结构和算法

问题描述 关于java的数据结构和算法 各位前辈,各位大神: 你们好! 很不幸,小弟一直从事做java开发,故而数据结构和算法不是很好(java中的set/map还是比较熟悉的),很多大公司招聘对这一块还是比较看重的,请问一下有什么好的解决方式吗? sincerely! 解决方案 有什么办法,赶快学呗.要是觉得难趁早转行. 解决方案二: 书读百遍,其义自现,路就在那里,只不过很多人没有做到 解决方案三: 认证java语数及编写 解决方案四: 那就看下资料学呗,其实也不是所有的大公司都要有算法 解

C中,(int)-0.5=-1,java中,(int)-0.5=0;java有没有类似算法

问题描述 C中,(int)-0.5=-1,java中,(int)-0.5=0;java有没有类似算法 C的这种方法的浮点整数映射上是线性的,java的方法在0附近将发生重叠,这样的话,在实数域处理问题要分类讨论,不方便. 方法好像有Math.floor(),不知道还有没有简单的表达式 解决方案 (int)-0.5=-1 这个才是科学的,因为int永远是找比自身小的最大整数. java需要判断 double d = -0.5; int r = d > 0? (int)d : (int)d - 1;