(一)一个简单的取物游戏的算法

博主是一个java菜鸟,偶然间朋友推荐博主找leetcode.com上的算法从简单到难没事就写几个,所以博主决定每一到两天贴出一个自己写的算法code,因为是新手,代码一定显得拙劣,希望能和大神以及编程爱好者们相互交流,共同提高。以下是今天的算法和code:

 

 

You are playing the following Nim Game with your friend: There is a heap of stones on the table, each time one of you take turns to remove 1 to 3 stones. The one who removes the last stone will be the winner. You will take the first turn to remove the stones.
Both of you are very clever and have optimal strategies for the game. Write a function to determine whether you can win the game given the number of stones in the heap.
For example, if there are 4 stones in the heap, then you will never win the game: no matter 1, 2, or 3 stones you remove, the last stone will always be removed by your friend.

(简单讲就是一个两个人玩的取物游戏,每个人能取1到3个数,取到最后一个数的人赢)

 

 

 

public class Nim {
	public boolean canWinNim(int num) {// num是石头的数量
		ArrayList array = new ArrayList();
		for (int i = 0; i < num; i++) {
			array.add(i);
		}
		System.out.println("石头的数量为:" + num + "\n");
		int m = (num - 1) % 4;// 4个一组以后还剩的数量为m
		int p = (num - 1) / 4;// 4个一组一共有p组
		if (m == 3) {
			System.out.println("后手赢,稳的一逼!!\n");
		} else {
			System.out.println("先手赢,稳的一逼!!\n");
		}
		if (num > 4) {

			System.out.println("需要取得数为:");
			for (int o = 0; o < p; o++) {
				System.out.print((m + 1 + 4 * o) + " ");
			}
			return true;
		}
		return false;

	}
}

 

 

代码一定有不足,希望大神提出宝贵建议~laugh.gifuploading.4e448015.gif正在上传…重新上传取消大笑
 

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值