游客被指捡石子砸老虎游戏C语言设计

c语言 取石子游戏_百度知道
c语言 取石子游戏
有n堆石子,分别有a1,a2,a3....an个。俩个游戏者轮流操作,每次可以选一堆,拿走至少一个石子,但不能拿走超过一半的石子。比如,若有3堆石子,每堆分别有5,1,2个,则下一轮中,游戏者可以从第一堆中拿1个或者2个,第二堆中拿1或2个,第二堆中不能拿,第三堆只...
我有更好的答案
推荐,为免你不熟悉c++,特意改了一份可以在vc6.0编译通过的c语言源代码:#include &stdio.h&
typedef __int64 LL;
LL SG(LL x)
return x % 2 == 0 ? x / 2 : SG(x / 2);
int main()
scanf(&%d&,&T);
while(T--)
LL ans = 0;
scanf(&%d&,&n);
while(n--)
scanf(&%I64d&,&x);
ans ^= SG(x);
printf(&YES\n&);
printf(&NO\n&);
采纳率:67%
为您推荐:
其他类似问题
您可能关注的内容
c语言的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。取石子游戏【c语言吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:584,057贴子:
取石子游戏收藏
有三堆非空石子,两人轮流操作:先选出一堆石子,将该堆石子全部扔掉。然后在剩下的两堆石子中选一堆出来,分成两堆非空的石子。完成不了上述操作的人输。我先取,怎么判断局面胜负?
选出的石子 没有数量 也没总量 怎么分呀
随便分啊,只要非空就行,比如3 3 3肯定是先手必败。
哦 这样呀 我比较喜欢对半分
只能在大家都不犯错的情况下判断胜负吧。
当然不包括故意输了,双方都是绝顶聪明的人
最暴力的办法,使劲遍历,遍历到b永远小于a,a就赢。遍历不到,a就输
有个小bug啊,只要有人把剩下一堆分成n-1 和 1个,然后把n-1个的这堆扔掉,最后一个就悲剧了
那就n-2扔掉,然后2个平分。。后边的还是一个死
好吧,我给你找个先手必败局,你告诉我为什么会必败比如4 2 2,你怎么分都是我胜,明白不?
错了,4 2 2是先手必胜,2 2 2是先手必败,5 6 7是先手必胜你怎么解释
我把4扔掉,然后2 2分。你把2扔掉,1 1分,然后我死。是这意思不?
谁得到先手就分成四然后扔掉别的那不就必胜了么。。。
4 2 2是先手必胜,扔2,分成2 2 2,无论你怎么分都必输
说的详细些可以吗
可能是你的描述不太清楚觉得这么不怎么可能。。。看到18l我就更确信了
1 8 1也是先手必胜啊,再给你个先手必败的局面吧1 3 5
我扔一份,然后剩下的两份可以随便分么?就像4,2两份分成3,3或者2,2,2这样都可以?
我先手扔3,然后保留3,3你2手只能扔3,然后分1,2.我扔1,分1,1.先手不赢了?还是我理解有误。。感觉你这题目怎么这么绕
当然不行啊,扔一堆剩下4 2,只能把其中一堆分成不为空的两堆,变成2,2,2或1,3,2或4,1,1要保证每回都得是3堆非空的,我题目说的不清楚吗?
这样的东西。。。这是研究算法的同学搞得啊。。
每次都得保证有三堆非空石子才行,1 1 1就没法分了
学会了可以逗小朋友玩
虽然还有点模糊,但是第六感觉,这个和一步画多线图一样,有个奇偶点的概念
大概想了想,好像只要有2的N次方在,而且先手的话,先手赢
判断不难:三堆石子简化为三个数,三个数奇偶数可能为:奇数
先手必输奇数
先手必胜奇数
先手必胜偶数
分以下情况:2*奇数
先手必输2*奇数
先手必胜2*奇数
先手必胜2*偶数
登录百度帐号豆丁微信公众号
君,已阅读到文档的结尾了呢~~
《c语言课程设计报告--小游戏“石头剪子布”》
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
《c语言课程设计报告--小游戏“石头剪子布”》
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='http://www.docin.com/DocinViewer--144.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口后使用快捷导航没有帐号?
只需一步,快速开始
请完成以下验证码
请完成以下验证码
主题帖子荣誉
查看: 936|回复: 5
& 累计签到:872 天连续签到:3 天
马上注册加入鱼C,享用更多服务吧^_^
才可以下载或查看,没有帐号?
本帖最后由 冬雪雪冬 于
20:04 编辑
从现在开始我们要开展一批欧拉计划的习题练习。
其实在我们论坛中已有欧拉计划的板块,可能有些鱼油还没注意到。
什么是欧拉计划:
我们欧拉板块现已给出了200余题,这批练习将从欧拉计划中选题。其实用python语言完成有很多的优势,可以更简洁更方便的实现。
如果大家有兴趣也可浏览欧拉的英文网站:
这里已经有了500余题。
& & & & & & & & & & & & & & & &
以python语言完成,如果是python2请注明。
程序以代码文字格式发帖。
注重程序效率和创意。
答题在一周内完成,即10.2 10:00之前,其后将公开大家的答案,并评比成绩。
另程序和答案可以在网上搜到,希望大家独立完成。题目不难,大家看看谁的效率高。
-- 回帖需写明解题思路,鼓励在程序中加上注释 --
-- 一些鱼油反映题目有些过难,为此略过一部分偏难的题目 --
& & & & & & & & & & & & & & & & 301
取石子游戏
1.jpg (74.16 KB, 下载次数: 1)
22:26 上传
2.jpg (99.17 KB, 下载次数: 1)
22:26 上传
& 累计签到:380 天连续签到:2 天
本帖最后由 jerryxjr1220 于
09:20 编辑
这题用了点投机取巧的办法,虽然应该有一大堆理论的验证来说明为啥这题符合“斐波那契数列”,但是我还是没有彻底搞清楚。
先说说,我的解题步骤吧。
一开始拿到这题目,我也是没有方向的,唯一可以确定的就是:如果某个状态假设(i,j,k)可以通过去掉某一堆中的x而得到(i-x,j,k)或(i,j-x,k)或(i,j,k-x)为0的话,那么(i,j,k)就为非0;反之,如果没有任何x满足以上条件,那么(i,j,k)就为0.
所以,这题目就可以利用动态规划的思路来求解,但是由于n&=2**30数组比较大,所以我没有直接求解,而是先列出前前几位数看看都有一些什么规律。
T = {(0,0,0):0}
index = [[0,0,0]]
while index:
& & & & i = index.pop(0)
& & & & for j in range(3):
& & & & & & & & idx = i.copy()
& & & & & & & & idx[j] += 1
& & & & & & & & if tuple(sorted(idx)) not in T:
& & & & & & & & & & & & index.append(idx)
& & & & & & & & else:
& & & & & & & & & & & & continue
& & & & & & & & for k in range(1,max(idx)+1):
& & & & & & & & & & & & flag = 1
& & & & & & & & & & & & for l in range(3):
& & & & & & & & & & & & & & & & iidx = idx.copy()
& & & & & & & & & & & & & & & & iidx[l] -= k
& & & & & & & & & & & & & & & & if iidx[l] &= 0 and T[tuple(sorted(iidx))] == 0:
& & & & & & & & & & & & & & & & & & & & T[tuple(sorted(idx))] = 1
& & & & & & & & & & & & & & & & & & & & flag = 0
& & & & & & & & & & & & & & & & & & & & break
& & & & & & & & & & & & if not flag:
& & & & & & & & & & & & & & & & break
& & & & & & & & if flag:
& & & & & & & & & & & & T[tuple(sorted(idx))] = 0
& & & & if sum(i)&200:
& & & & & & & & break
for i in range(50):
& & & & if (i,2*i,3*i) in T and T[i,2*i,3*i]==0:
& & & & & & & & print(i,2*i,3*i)复制代码
0 0 0 #0不算
1 2 3 #小于等于2**0=1的有1个
2 4 6 #小于等于2**1=2的有2个
4 8 12 #小于等于2**2=4的有3个
8 16 24 #小于等于2**3=8的有5个
16 32 48 #小于等于2**4=16的有8个
32 64 96 #小于等于2**5=32的有13个
对于1,2,3,5,8,13这几个数是不是很眼熟?对的,他们就是“斐波那契数列”,所以小于等于2**30的个数其实就是求“斐波那契数列的第30项”,就这么简单。
F=[1,2]
for _ in range(1,30):
& & & & F.append(F[-1]+F[-2])
print(F[30])复制代码
& 累计签到:380 天连续签到:2 天
本帖最后由 jerryxjr1220 于
11:00 编辑
另外去网上搜了一下,凡是符合(i,j,k)=0的情况,i^j^k=0,也就是i^j=k。
所以也可以这样写:
print(sum(1 for i in range(1,2**30+1) if i^(2*i)==3*i))复制代码
python的循环效率还是比较低,如果没有优化,基本上要4~5分钟才能出结果。
同样的逻辑,用aardio编写的话(C/C++内核),1分钟不到就可以了。
st = time.tick();
console.setTitle(&euler301&);
var count = 0;
for (i=1;2**30) begin
& & if (i^(2*i)^(3*i)==0) begin
& && &&&count++;
& &
console.print(count);
console.print(time.tick()-st, 'ms');
console.pause();
复制代码
& 累计签到:249 天连续签到:18 天
另外去网上搜了一下,凡是符合(i,j,k)=0的情况,i^j^k=0,也就是i^j=k。
所以也可以这样写:
aardio 应该是 Lua 内核
& 累计签到:380 天连续签到:2 天
aardio 应该是 Lua 内核
aardio程序编写同样也是很方便的,而且运行速度又快,唯一的缺点就是没有python那么多现成的模块可以用,一些很简单的功能都需要从头写代码完成。
& 累计签到:249 天连续签到:18 天
aardio程序编写同样也是很方便的,而且运行速度又快,唯一的缺点就是没有python那么多现成的模块可以用, ...
aardio的定位是502快粘胶,不是大而全的语言。
核心没开源,只能靠作者一个人维护。
不过aardio可以通过调用其它语言的引擎来实现所有的功能。包括python。
小甲鱼强烈推荐
新的视频新的面貌,希望大家喜欢 (≧∇≦)ノ
- - - - - - - - - - - -
新课程,新体验!
移动客户端下载(未启用)
微信公众号
Powered by
Copyright &
&&& All Rights Reserved.取石子游戏(★★) 基本功能: 设计一个系统模拟取石子游戏,基本功_百度知道
取石子游戏(★★) 基本功能: 设计一个系统模拟取石子游戏,基本功
取石子游戏(★★)
基本功能:
设计一个系统模拟取石子游戏,基本功能包系括:设置,开始游戏。取石子游戏是一个博弈类游戏。有一堆石子,两个人分别从其中取石子,每次只能取1个、2个或3个,谁取到最后一个便输。
一级菜单显示“1.设置、2.开始游戏 3.退出”...
我有更好的答案
不知道你们叫什么,我们叫石六棋,因为是用6个小石头下就叫这了。
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。

我要回帖

更多关于 捡石子砸老虎 的文章

 

随机推荐