五、 完善程序(前5空,每空2分;后6空,每空3分,共28分) 1.Joseph 题目描述: 原始的Joseph问题的描述如下:有n个人围坐在一个圆桌周围,把这n个人依次编号为1,……,n。从编号是1 的人开始报数,数到m个人出列,然后从出列的下一个人重新开始报数,数到第m个人又出列,……,如此反复直到所有的人全部出列为止。比如当n=6,m=5的时候,出列的顺序依次是5,4,6,2,3,1。 现在的问题是:假设有k个好人和k个坏人。好人的编号是1到k,坏人的编号是k+1到2k。我们希望求出m的最小值,使得最先出列的k个人都是坏人。 输入: 仅有的一个数字是k (0 < K<14)。 输出: 使得最先出列的k个人都是坏人的m的最小值。 输入样例: 4 输出样例: 30 程序: program progaram1; var i,k,m,start:longint; find:boolean; func tion check(remain:integer):boolean; var result:integer; begin
result:=____(1)____ mod remain; if ____(2)____ then begin start:=result; check:=true; end else check:=false; end; begin find:=false; read(k); m:=k; while ____(3)____ do begin find:=true; start;=0; for i:=0 to k-1 do if (not check(____(4)____)) then begin find:=false; break; end; inc(m); end; writeln(____(5)____); end.
2.逻辑游戏 题目描述: 一个同学给了我一个逻辑游戏。他给了我图1,在这个图上,每一段边界都已经进行了编号。我的任务是在图中画一条连续的曲线,使得这条曲线穿过每一个边界一次且仅穿过一次,而且曲线的起点和终点都在这个区域的外面。这条曲线是容许自交的。
对于图1,我同学告诉我画出这样的一条曲线(图2)是不可能的,但是对于有的图形(比如图3),画出这样一条曲线是可行的。对于给定的一个图,我想知道是否可以画出满足要求的曲线。
图1 图2
图3 1 1 2 1 2 2 1 1 2 图4 输入: 输入的图形用一个n*n的矩阵表示。矩阵的每一个单元里有一个0到255这间的整数(包括0和255)。处于同一个区域的单元里的数相同,相邻的区域的数不同(但是不相邻的区域里的可能相同)。 输入的第一行是n
program program2; const d:array[0..7] of integer =(1,0,-1,0,0,1,____(1)____); var orig,n,i,j,ns:integer; a:array[0..100,0..101] of integer; bun:boolean; procedure plimba(x,y:integer); var i,x1,y1:integer; begin a[x,y]:=-a[x,y]; if (abs(a[x-1,y],) a[x+1,y]) or (abs(a[x,y-1],) orig) and ((a[x+1,y-1] orig)) then inc(ns); if (abs(a[x,y-1],) a[x,y-1]) or (abs(a[x-1,y],) orig) and ((a[x-1,y+1] orig)) then inc(ns); for i:=0 to 3 do begin x1:=x + d[2 * i]; y1:=y + ____(4)____; if (x1>=1) and (x1=1) and (y1-1 then begin ns:=0; ____(6)____; plimba(i,j); if ns mod 2 =1 then bun:=false; end; if bun then writeln(‘YES’); if not bun then writeln(‘NO’); end. 摘自 大榕树
[此贴子已经被作者于2004-10-17 17:41:25编辑过] |