java实现牛牛算法

牛牛 题目描述 LZY发明了一个纸游戏,取名叫做LZY牛牛。他的好伙伴WLJ对这个游戏很感兴趣,于是他们俩玩起了这个游戏。 每人抽取五扑克堆里的扑克有 A,2,3,4,5,6,7,8,9,10,J,Q,K 这13种点数的扑克若干。 扑克 10,J,Q,K都视为点数 10,扑克 A 视为点数 1,其他数字为多少则点数为多少。 当我们能从五中挑选3相加,使得他能被10整除,那么称之为... 阅读详情
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张牌
	@Test
	public int[] getCard(){
		Random rd = new Random();
		for(int i=0;i<5;i++){
			temp = random[i] = rd.nextInt(52);//随机生成0到51个int
			for(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张之和为10
			for(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.一副,去掉两个王,总共52,2-6个人玩,每人发5。 2.5中的任意3加起来不能成为10的倍数(如5,6,8,10,J)则是 无牛 3.中的任意3加起来为10的倍数,但另外2不为10的倍数。至于到底是牛几,就要看另外2相加之后的... 阅读详情

相关推荐

牛牛算法java版,包含牛牛算法 结算配置自定义等,里面有测试类

包含牛牛算法 结算配置自定义等,里面有测试类,包含牛牛算法 结算配置自定义等,里面有测试类包含牛牛算法 结算配置自定义等,里面有测试类包含牛牛算法 结算配置自定义等,里面有测试类包含牛牛算法 结算配置自定义等,里面有测试类

java实现牛牛游戏源代码

package com.zyy.java; import java.util.List; public class Bull { private static CreatPlayers cplayers; private static CreatPoker cpoker; private static Shuffle shuffle; private static SendPoker ...

qq_37011547的博客 5600

Java模拟三公,出

Java模拟三公,出及列出所有型按从大到小排序.

游戏 java逻辑_Java游戏 牛牛 逻辑代码 实现

packageyan.study.game.puke;importcn.yan.study.utils.YanStrUtils;importcn.yan.study.utils.cache.ConcurrentHashMapCacheUtils;importjava.util.*;public classNiuNiuGame {/***获取一手的牛*/public staticNiuResult...

weixin_29215969的博客 410

牛客网算法练习--[编程题]迷路的牛牛 java实现

今天开始练习一下算法和mysql等题目,增加一下自己的算法能力。 链接:https://www.nowcoder.com/questionTerminal/fc72d3493d7e4be883e931d507352a4a?toCommentId=6159662 来源:牛客网 [编程题]迷路的牛牛 热度指数:43429 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M 算法知识视频讲解 牛牛去犇犇老师家补课,出门的时候面向北方,但是现在他迷路了。虽然他手里有.

matthew_leung的博客 489

牛客网算法练习--[编程题]牛牛的闹钟 java实现

题目描述 牛牛总是睡过头,所以他定了很多闹钟,只有在闹钟响的时候他才会醒过来并且决定起不起床。从他起床算起他需要X分钟到达教室,上课时间为当天的A时B分,请问他最晚可以什么时间起床 输入描述: 每个输入包含一个测试用例。 每个测试用例的第一行包含一个正整数,表示闹钟的数量N(N<=100)。 接下来的N行每行包含两个整数,表示这个闹钟响起的时间为Hi(0<=A<24)时Mi(0<=B<60)分。 接下来的一行包含一个整数,表示从起床算起他需要X(0<=X<=

matthew_leung的博客 573

TH58 牛牛排队

按照牛牛的策略,每个门口外的排队人数随着时间的变化的结果为[10,10]→[9,9]→[8,8]→[7,7]→[6,6]→[5,5]→[4,4]→[3,3]→[2,2]→[1,1]→[0,0]按照牛牛的策略,每个门口外的排队人数随着时间的变化的结果为[2,3,2,0]→[1,2,1,0]→[0,1,0,0],当牛牛走到第3个门时,刚好没有人排队,所以牛牛最后可以从第3个门进去。现在给你门的数量n,和每个门外排队的人的数量,如果按照牛牛的策略,那么牛牛最终会在哪个门进去吃饭呢?

倚楼听风雨的博客 878

消消乐java算法_Java算法题——牛牛消消乐

Java算法题——牛牛消消乐今天做算法题,遇到了这个题目,随后想把自己的想法写出来。题目是:“曾经有两次消除的机会摆在我面前,我却没有珍惜……”牛牛回忆道。牛牛正在玩一款全新的消消乐游戏。这款游戏的主体是由一列列的方块构成,牛牛的目标就是要尽量消除这些方块。每次操作,牛牛可以选择某个高度 x ,将所有高度大于等于 x 的那些列全部消除 x 个方块,随后方块会下落,以填补消除造成的空白。牛牛这一局的...

weixin_39775896的博客 1135

Java-牛客-牛牛组队-3月21

牛牛组队 题目描述: import java.util.*; public class Main { public static void main(String[] args) { Scanner scanner=new Scanner(System.in); while(scanner.hasNextInt()){ int n= scanner.nextInt(); int [] a=new int[n*3];

m0_56642224的博客 1166

JAVA 牛牛逻辑

java牛牛游戏逻辑实现 ,从创建房间-创建玩家-创建扑克-洗-发-比较大小(判断牛的类型 添加倍率)得到赢的玩家和倍率

添加字符(牛牛手里有一个字符串A,羊羊的手里有一个字符串B,B的长度大于等于A,所以牛牛想把A串变得和B串一样长,这样羊羊就愿意和牛牛一起玩了。)

添加字符 题目描述 牛牛手里有一个字符串A,羊羊的手里有一个字符串B,B的长度大于等于A,所以牛牛想把A串变得和B串一样长,这样羊羊就愿意和牛牛一起玩了。 而且A的长度增加到和B串一样长的时候,对应的每一位相等的越多,羊羊就越喜欢。比如"abc"和"abd"对应相等的位数为2,为前两位。 牛牛可以在A的开头或者结尾添加任意字符,使得长度和B一样。现在问牛牛对A串添加完字符之后,不相等的位数最少有多少位? 输入描述: 第一行为字符串A,第二行为字符串B,A的场地小于等于B的长度,B的长度小于等于50.字符均为

weixin_42956047的博客 876

算法题】牛牛的背包问题(分治)

包中够少种零食放法 背包容量为w。一共有n袋零食,第i袋零食体积为v[i]。 总体积不超过背包容量的情况下,一共有多少种零食放法?(总体积为0也算一种放法)。使用分治方法求解。

小七的博客 644

Java——公牛母牛小游戏(完整代码详细解析)

目录前言一、游戏规则二、详细解析三、完整代码猜数字(又称 Bulls and Cows )是一种古老的的密码破译类益智类小游戏,起源于20世纪中期,一般由两个人或多人玩,也可以由一个人和电脑玩。通常由两个人玩,一方出数字,一方猜。出数字的人要想好一个没有重复数字的4个数,不能让猜的人知道。猜的人就可以开始猜。每猜一个数字,出数者就要根据这个数字给出几A几B,其中A前面的数字表示位置正确的数的个数,而B前的数字表示数字正确而位置不对的数的个数。如正确答案为 5234,而猜的人猜 5346,则是 1A2B,其中

BroRiver 1474

java swing开发窗体程序开发(一)GUI编程

Java SWing就是java提供的一个类库专门用于开发窗体程序的,相对于C#的winform,java swing的开发要比C#更加麻烦,他不像C#拥有可视化的界面编辑工具 而是需要像QT一样纯代码式GUI编程。java的好处就是通用性强,跨平台,这个java窗体程序做好之后,哪都可以用。然而C#的winform只能运行在有.net框架上 的平台,然而.net支持最好的,也就只有windows...

(˶˚ ᗨ ˚˶)来康康我 4万+

斗牛java主程序设计_Java swing中制作斗牛游戏如何牛点

雷晓东NANA2019.01.08采纳率:63%等级:39已帮助:98296人进口的java.awt.BorderLayout;进口java.awt.event.MouseEvent中;进口java.awt.event.MouseListener;进口javax.swing.JButton中;进口javax.swing.JFrame中;公共类隐藏显示扩展的JFrame {/ **** /私...

weixin_34079140的博客 562

Java实现牛牛的水杯

牛牛口渴了,要喝10升水才能解渴,但现在只有一个深h厘米,底面半径是r厘米的水杯,牛牛最少要喝多少杯水才能解渴。 水杯的体积公式是π×h×72,其中π取3.14,h和r是整数。

lixinmengxiaoyu的博客 2443

消消乐游戏算法java_Java算法题——牛牛消消乐

import java.util.*;public classSolution {/*** 返回两次操作后,数组元素之和的最小值*@paramnums int整型一维数组 这你你需要操作的数组*@returnlong长整型*/public long minimumValueAfterDispel (int[] nums) {//write code hereArrays.sort(nums);lo...

weixin_34167684的博客 1554

Java游戏 牛牛 逻辑代码 实现

源代码链接package yan.study.game.puke; import cn.yan.study.utils.YanStrUtils; import cn.yan.study.utils.cache.ConcurrentHashMapCacheUtils; import java.util.*; public class NiuNiuGame { /** * 获...

qq_35030994的博客 6614
下一篇: java高位转低位原理探索
htmlman01
博客等级 码龄12年 2粉丝 5原创
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值