回 帖 发 新 帖 刷新版面

主题:[讨论]第N个人出局或表演的题目

[size=2][/size][color=800080][/color]
[size=3][/size]

1。请大家帮我分析一下这一类型题目的思路(简单一点的):
  M个人围坐在一起,确定其中一个人为1号,按顺时针方向依次为2号,3号。。。
M号随机抽一个正整数N(N<=M),从1号开始按顺时方向数起,每数到N时,这个人就从圈里出来表演节目,再继续数1,2,3,。。。,N数到第N个人也从圈时出来表演。。。。凡是表演过节目的人,下次数的时候就跳过不再数。不断继续下去,直到M个人都从圈内出来表演过节目的人。编军一个程序打印出表演者的顺序号码。  
2。这类题目有哪些?如有国王杀人问题,及数到N时出局。。一样的吧,还有什么类型的。。?([em18][em18][em18][em18]

回复列表 (共11个回复)

沙发

这种题目关键是难想,想出来了程序也就写好了。我很喜欢这样的题目,可以开阔思路

板凳

1. 数组标志,
   找到目标作适当处理。
2. 有一定规律的甚至可以不用数组。

3 楼

呵呵,我知道有人会帮我写的。[em2]

4 楼

'M个人围坐在一起,确定其中一个人为1号,按顺时针方向依次为2号,3号。。。
'M号随机抽一个正整数N(N<=M),从1号开始按顺时方向数起,
'每数到N时,这个人就从圈里出来表演节目,再继续数1,2,3,。。。,N
'数到第N个人也从圈时出来表演。。。。
'凡是表演过节目的人,下次数的时候就跳过不再数。
'不断继续下去,直到M个人都从圈内出来表演过节目的人。
'编写一个程序打印出表演者的顺序号码。

'飞鸟12 2005/12/6 23:25:05

do
  input "max ,n:";m,n
loop until m>n
DIM state(1 TO m) AS INTEGER, sort(1 TO m) AS INTEGER
for i=1 to m
  state(i)=0  '用来存储每个人的状态 为1则已经表演过
  sort(i)=0   '用来存储表演的顺序
next i

i=1           '用于state数组中的计数
cnts=1        '用于sort 数组中的计数
cntn=0        '用于查找计数
do
  '查找第N个人
  cntn=0
  do
    if state(i)=0 then
      cntn=cntn+1
      if cntn=n then exit do
    end if
    i=i+1:if i=m+1 then i=1
  loop
  '将次序存入sort
  sort(cnts)=i
  state(i)=1
  cnts=cnts+1
loop while cnts<=m
for i=1 to m
  print using "### ";sort(i);
next i
sleep


max ,n:? 23,12
12   1  14   4  18   9   2  19  13   8   6   5   7  11  17  23  20  16  22  21
15  10   3

5 楼

谢谢。

6 楼

dim y(4,-3to3,3to6)的元素个数是。。多少。
是这样子解释的吗。。5*7*4=140个元素?

7 楼

是的

8 楼

'M个人围坐在一起,确定其中一个人为1号,按顺时针方向依次为2号,3号。。。
'M号随机抽一个正整数N(N<=M),从1号开始按顺时方向数起,
'每数到N时,这个人就从圈里出来表演节目,再继续数1,2,3,。。。,N
'数到第N个人也从圈时出来表演。。。。
'凡是表演过节目的人,下次数的时候就跳过不再数。
'不断继续下去,直到M个人都从圈内出来表演过节目的人。
'编写一个程序打印出表演者的顺序号码。

m = 23          :   n = 12             :  i=1
for j = 1 to m  :   s$ = s$ + chr$(j)  :  next
for j = 1 to m
  i = (i + n - 2) mod len(s$) + 1
  print asc(mid$(s$, i, 1));
  s$ = left$(s$, i - 1) + mid$(s$, i + 1)
next

9 楼

m=23
n=12
dim state(m)
for cnts=1 to m
  cntn=0
  do
    i=i mod m + 1
    cntn=cntn+1-state(i)
  loop until cntn=n
  state(i)=1
  print i;
next

10 楼

m=23
n=12
dim state(m)
for cnts=1 to m
  for cntn=1 to n
    i=i mod m + 1
    cntn=cntn-state(i)
  next
  state(i)=1
  print i;
next

我来回复

您尚未登录,请登录后再回复。点此登录或注册