【题目】:
一个数组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) 重新来过。
重新来过又有多种表示方法:
时间: 2024-12-21 16:57:48