俄罗斯方块新增行算法:不拘一格编程序之二计算机二级考试

文章作者 100test 发表时间 2009:07:25 10:23:53
来源 100Test.Com百考试题网


  编辑特别推荐:

  全国计算机等级考试(等考)指定教材

  全国计算机等级考试学习视频

  全国计算机等级考试网上辅导招生

  全国计算机等级考试时间及科目预告

  百考试题教育全国计算机等级考试在线测试平台

  全国计算机等级考试资料下载

  全国计算机等级考试论坛

  计算机等级考试四级应用题解析汇总

  2009年下半年全国计算机二级考试报名时间从6月1日起已经开始报名。详情点击:2009年下半年全国计算机等级考试各地报名点汇总。2009年下半年全国计算机二级考试时间是2009年9月19日至23日。更多优质资料尽在百考试题论坛 百考试题在线题库

  【题目】:
  一个数组int a[10],要求为每个元素随机赋值0或者1,但是这10个元素不能全0,也不能全1。
  【说明】:俄罗斯方块中需要在最下面插入若干具有随机方块的行,以增加游戏的难度。当然不能一行全是方块,这样就不能掉呢。也不能没有方块,那样难度会小一些。
  【方法1】逐个随机,统一判断
  随机产生10个元素,如果都是0,或者都是1,就重新生成。
  算法的关键不是逐个产生随机数,而是如何确定产生的随机数是全0?全1?或者0、1都有。
  【方法1.1】标志法(部分法)
  增加变量n1。如果n1=1表示10个随机数全为0.
  在增加变量n2。如果n2=1表示10个随机数全为1.
  int n1 =1, n2 = 1.
  for (int i=0. i<.10. i )
  {
  a[i] = random(2).
  if (a[i] == 0)    n2 = 0 .
  else n1 = 0.
  }
  if (n1 == 1 || n2 == 1) 重新来过。
  【方法1.2】整体法
  将a[i]的取值全部加起来,结果为0表示全0,结果为10表示全1。
  int sum=0.
  for (int i=0. i<.10. i )
  {
  a[i] = random(2).
  sum = a[i].
  }
  if (sum==0 || sum == 10) 重新来过。
  重新来过又有多种表示方法:
  【方法1.3】:标签法
  label1:
  n1 = 1.
  n2 = 1.
  for (int i=0. i<.10. i )
  {
  a[i] = random(2).
  if (a[i] == 0)    n2 = 0 .
  else n1 = 0.
  }
  if (n1 == 1|| n2 == 1) goto lable1.
  【方法1.4】:循环法法
  n1=1.n2=1.
  while (n1==1||n2==1)
  {
  n1 = 1.
  n2 = 1.
  for (int i=0. i<.10. i )
  {
  a[i] = random(2).
  if (a[i] == 0)    n2 = 0 .
  else n1 = 0.
  }
  }
  【方法1.5】:循环法
  int sum=0.
  while(sum=0 || sum==10)
  {
  sum=0.
  for (int i=0. i<.10. i )
  {
  a[i] = random(2).
  sum = a[i].
  }
  }

相关文章


DELPHI技巧:有关TListView的使用计算机二级考试
全国计算机等级考试二级应试指导及应试技巧计算机二级考试
循环的各种形式:不拘一格编程序之四计算机二级考试
变量取值交换的方法:不拘一格编程序之三计算机二级考试
俄罗斯方块新增行算法:不拘一格编程序之二计算机二级考试
循环打印算法:不拘一格编程序之一计算机二级考试
VC 实现局域网嗅探QQ号计算机二级考试
常用数据类型使用转换详解计算机二级考试
C 实例:求2至N(2≤N≤500)之间的素数计算机二级考试
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛