package com.sgh;import java.util.Arrays;
import java.util.Random;import org.junit.Test;/*** 牛牛算法* jqk10,表示10牛,共5张牌,其中3张之和为10,,20,30,剩余之和与10取余就是多少牛* @author Administrator**/
public class Taurus {private int temp,n,cardsTotal;//n表示jqk 10的个数,cow表示牛,cardsTotal表示牌总和private int cow = -1;//默认没有牛private int[] card = new int[5];//5个牌private int[] random = new int[5];//5个随机数//模拟52张牌private final int[] cards = /*new int[]*/{1,2,3,4,5,6,7,8,9,10,11,12,13,1,2,3,4,5,6,7,8,9,10,11,12,13,1,2,3,4,5,6,7,8,9,10,11,12,13,1,2,3,4,5,6,7,8,9,10,11,12,13,1,2,3,4,5,6,7,8,9,10,11,12,13};//随机产生5张牌@Testpublic int[] getCard(){Random rd = new Random();for(int i=0;i<5;i++){temp = random[i] = rd.nextInt(52);//随机生成0到51个intfor(int j=0;j<i;j++){if(temp == random[j]) continue;//重复则重新随机
//              if(temp == 52) continue;//数组下标从0开始,只有51}}System.out.println("随机数:"+Arrays.toString(random));//取牌for(int i=0;i<random.length;i++){card[i] = cards [random[i]];if(card[i]>=10) n++;}//给card排序Arrays.sort(card);//倒序int[] card1 = new int[5];for(int i=0;i<card.length ;i++){card1[i] = card[4-i];}print(card1);return card1;}//判断牛几方法private int getCow(int[] card){for(int i=0;i<card.length;i++){/*if(card[i]>=10){cardsTotal +=10;}else*/cardsTotal +=card[i];}System.out.println("cardsTatoal="+cardsTotal);;//根据jqk10个数分情况讨论switch(n){case 0://一张都没用for(int i=0;i<4;i++ ){for(int j=1;j<5;j++ ){if((cardsTotal-card[i]-card[j])%10==0){cow = (card[i]+card[j])%10;}}}return cow;case 1://有一张jqk10的情况,剩余4张中有3张之和要被10整除for(int j=0;j<5;j++ ){if((cardsTotal-card[0]-card[j])%10==0){cow = (cardsTotal-card[0])%10;}}return cow;case 2://有2张jqk10的情况,剩余3张中有2张之和等于10或者剩余3张之和为10for(int i=n;i<4;i++){for(int j=n+1;j<5;j++ ){if((card[i]+card[j])==10 ||(cardsTotal-card[i]-card[j])%10 == 0){for(int k=0;k<n;k++){cardsTotal-=card[k];}cow = cardsTotal%10;}}}return cow;default://有3,4,5张jqk10的情况for(int i=0;i<n;i++){cardsTotal -= card[i];}cow = cardsTotal%10;return cow;}}//打印方法private void print(int[] card) {for(int i=0;i<card.length;i++){if(card[i]==13) System.out.print("K"+" ");       if(card[i]==12) System.out.print("Q"+" ");       if(card[i]==11) System.out.print("J"+" ");       if(card[i]<=10)System.out.print(card[i]+" ");}}public static void main(String[] args) {Taurus ts = new Taurus();int[] card =ts.getCard();int cow = ts.getCow(card);System.out.println();System.out.println(cow);}}

java实现牛牛算法相关推荐

  1. Java 数据结构与算法系列之冒泡排序

    一.前言 相信大部分同学都已经学过数据结构与算法这门课了,并且我们可能都会发现一个现象就是我们所学过的数据结构与算法类的书籍基本都是使用 C 语言来写的,好像没见过使用 Java 写的数据结构与算法. ...

  2. Java数据结构与算法——树(基本概念,很重要)

    声明:码字不易,转载请注明出处,欢迎文章下方讨论交流. 有网友私信我,期待我的下一篇数据结构.非常荣幸文章被认可,也非常感谢你们的监督. 前言:Java数据结构与算法专题会不定时更新,欢迎各位读者监督 ...

  3. Java常见排序算法

    Java常见排序算法 转载于:https://www.cnblogs.com/hfultrastrong/p/7829889.html

  4. Java数据结构与算法——插入排序

    声明:码字不易,转载请注明出处,欢迎文章下方讨论交流. 前言:Java数据结构与算法专题会不定时更新,欢迎各位读者监督.本篇文章介绍排序算法中插入排序算法,包括插入排序的思路,适用场景,性能分析,ja ...

  5. JAVA版连连看算法研究

    JAVA连连看之算法: 连连看连接方式的类型:<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:off ...

  6. java 求交集 算法_Java计算交集,差集,并集的方法示例

    Java计算交集,差集,并集的方法示例 发布时间:2020-10-07 10:37:46 来源:脚本之家 阅读:106 作者:benbenkui 本文实例讲述了Java计算交集,差集,并集的方法.分享 ...

  7. Java数据结构和算法(六)——前缀、中缀、后缀表达式

    前面我们介绍了三种数据结构,第一种数组主要用作数据存储,但是后面的两种栈和队列我们说主要作为程序功能实现的辅助工具,其中在介绍栈时我们知道栈可以用来做单词逆序,匹配关键字符等等,那它还有别的什么功能吗 ...

  8. Java数据结构和算法(一)——简介

    本系列博客我们将学习数据结构和算法,为什么要学习数据结构和算法,这里我举个简单的例子. 编程好比是一辆汽车,而数据结构和算法是汽车内部的变速箱.一个开车的人不懂变速箱的原理也是能开车的,同理一个不懂数 ...

  9. java基础----Base64算法的使用

    Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一,可用于在HTTP环境下传递较长的标识信息.详细的Base64信息,可以参见维基百科:https://en.wikipedia.org ...

最新文章

  1. linux的上传工具,Linux下精简版上传工具lrzsz
  2. Nature Methods:Rob Knight发布Striped UniFrac算法轻松分析微生物组大数据
  3. instance “error” 了怎么办?- 每天5分钟玩转 OpenStack(159)
  4. java输入日期计算天数_(JAVA)输入年月日,计算日期是今年的第几天?
  5. 让Windows7 x64 IIS7支持32位应用程序
  6. 48 SD配置-定价配置-定义条件表
  7. HijackThis日志细解【简明教程增强版】(六)
  8. Linux操作系统基础知识学习
  9. 机器学习基础(五十九)—— 高级优化算法(梯度下降、L-BFGS、共轭梯度)
  10. Flutter报错 使用Column等容器包裹ListView报错的问题
  11. java 程序路径_Java程序路径
  12. panel组件学习(1)常见属性学习
  13. c语言公交查询系统,公交路线查询系统(基于数据结构和C语言)完整
  14. linux命令sm,Linux系统命令和使用技巧8则
  15. 万年历设计单片机c语言,数字万年历设计(80c51单片机、时钟芯片ds1320).pdf
  16. java 拼音转汉字_Java通过pinyin4j实现汉字转拼音
  17. 小程序入门教程之微信-02-页面样式
  18. 取出一个字节(byte)中的每一位(bit)
  19. 黑群晖从无到有完善指南
  20. 【Unity】碰撞后缩小比例并与碰撞目标紧贴(吸附效果)

热门文章

  1. 酒店(宾馆)客房管理系统
  2. 大众点评评论标签替换文字问题
  3. Django之restframework的路由Routers
  4. [laravel]laravel8自动生成api文档
  5. 保姆级教学之内网穿透(NATAPP)
  6. 今天才发现!通过微信左下角,还可以快速找到未读消息
  7. 利用DOCX文档远程模板注入执行宏代码
  8. 编译 /home/nzm/dvsdk_3_00_02_44/codec_engine_2_24/examples/ti/sdo/ce/examples/apps/video_copy 【part2】
  9. Davinci的异构多核间通信基础组件SysLink
  10. Linux批量检测网络策略