基础算法(取石子游戏)
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
例2:进制转换:将十进制数n(1<=n<=2147473647)转化为二进制数,我们通 常使用短除法,即除2取余,结果倒排。编程实现输入整数n,输出其二进制。
program li2; var n:longint;a:array[1..31] of integer;i,j:integer; begin readln(n); i:=1; a[i]:=n mod 2; n:=n div 2; while (n<>0) do begin i:=i+1; a[i]:=n mod 2; n:=n div 2; end; for j:=i downto 1 do write(a[j]); end.
0 0 0 0 1
0 0 0 1 1
0 0 0 0 0
0 1 1 0 0
1 0 1 1 1
1 1 1 1 0
0 0 0 0 0
0 0 0 1 1
0 0 0 0 0
0 1 1 0 0
1 0 1 1 1
源自文库
1 1 1 1 0
例题:取石子必胜策略。 现有5堆石子,石子数依次为3,5,7,19,50。甲乙两人轮流从任一堆 中任取(每次只能取自一堆,不能不取),取最后一颗石子的一方获胜。 甲先取,问甲有没有必胜策略?若有,则甲第一步该在哪堆取多少?
在由0,1组成的矩阵中,当矩阵每列中的“1”个数是偶数时, 我们称该矩阵是偶矩阵。不难证明,对于偶矩阵,后取必胜。
program li2; var n:longint;a:array[1..31] of integer;i,j:integer; begin readln(n); i:=1; a[i]:=n mod 2; n:=n div 2; while (n<>0) do begin i:=i+1; a[i]:=n mod 2; n:=n div 2; end; for j:=i downto 1 do write(a[j]); end.
0 0 0 0 1
0 0 0 1 1
0 0 0 0 0
0 1 1 0 0
1 0 1 1 1
1 1 1 1 0
0 0 0 0 0
0 0 0 1 1
0 0 0 0 0
0 1 1 0 0
1 0 1 1 1
源自文库
1 1 1 1 0
例题:取石子必胜策略。 现有5堆石子,石子数依次为3,5,7,19,50。甲乙两人轮流从任一堆 中任取(每次只能取自一堆,不能不取),取最后一颗石子的一方获胜。 甲先取,问甲有没有必胜策略?若有,则甲第一步该在哪堆取多少?
在由0,1组成的矩阵中,当矩阵每列中的“1”个数是偶数时, 我们称该矩阵是偶矩阵。不难证明,对于偶矩阵,后取必胜。