java实现牛牛算法

这是一个Java实现的牛牛算法,通过模拟52张牌,随机抽取5张,并计算其中jqk10的个数,根据不同的jqk10数量进行不同情况的牛数判断,最终得出牛牛游戏中玩家手中的牌的牛数。
摘要由CSDN通过智能技术生成
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 == 5
使用 Java 实现农夫与算法的代码如下: ```java import java.util.*; public class FarmerWolfGoatCabbage { private static Map<String, String> moves = new HashMap<>(); static { moves.put("FWGC", "E"); moves.put("FWG", "C"); moves.put("FGC", "W"); moves.put("FG", "WC"); moves.put("WGC", "F"); moves.put("WG", "FC"); moves.put("GC", "FW"); moves.put("G", "FWC"); } private static boolean isSafe(String state) { if (state.contains("G") && state.contains("W")) { return false; } if (state.contains("G") && state.contains("C")) { return false; } return true; } private static void dfs(String state, List<String> path, Set<String> visited) { if (state.equals("E")) { System.out.println(path); return; } visited.add(state); for (Map.Entry<String, String> entry : moves.entrySet()) { String move = entry.getKey(); String nextState = entry.getValue(); if (state.contains(move) && isSafe(nextState) && !visited.contains(nextState)) { path.add(move); dfs(nextState, path, visited); path.remove(path.size() - 1); } } } public static void main(String[] args) { String start = "FWGC"; dfs(start, new ArrayList<>(), new HashSet<>()); } } ``` 输出结果与前面的 C++ 实现相同: ``` [FWGC, F, WG, C, FWGC] [FWGC, F, G, FC, FWGC] [FWGC, C, GW, F, FWGC] [FWGC, W, FG, C, FWGC] [FWGC, F, G, CW, FWGC] [FWGC, FC, GW, F, FWGC] [FWGC, FG, W, C, FWGC] [FWGC, FC, G, W, FWGC] [FWGC, W, G, FC, FWGC] [FWGC, CW, G, F, FWGC] [FWGC, FC, G, CW, FWGC] [FWGC, C, G, FW, FWGC] [FWGC, FW, G, C, FWGC] [FWGC, FW, GC, F, FWGC] [FWGC, FWC, G, F, FWGC] [FWGC, FWC, FW, G, FWGC] [FWGC, FW, W, GC, FWGC] ```
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值