俄罗斯方块新增行算法:不拘一格编程序之二计算机二级考试
文章作者 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].
}
}