打印n 0和m 1,以使C程序中没有两个0和三个1在一起
应该有N0和M1的序列,这样形成的序列不应包含两个连续的0和三个连续的1。
输入 -N=5M=9
输出 −11011011010101
注意-为了使上面的序列,语句(m<n-1)||m>=2*(n+1)如果为true,则应为false,这是我们无法建立上述序列的原因。
建议先通过问题逻辑来尝试一下,而不要跳到下面直接给出的解决方案。
算法
START
Step 1 -> take values in ‘n’ and ‘m’
Step 2 -> Loop IF m=n-1
Loop While m>0 and n>0
Print 01
Decrement m and n by 1
End Loop While
Loop IF n!=0
Print 0
End IF
Loop IF m!=0
Print 1
End IF
Step 3-> Else (m < n-1) || m >= 2 * (n + 1)
Print cn’t have sequence for this
Step 4 -> Else
Loop While m-n > 1 && n > 0
Print 1 1 0
Decrement m by 2 and n by 1
End While
Loop While n>0
Print 1 0
Decrement m and n by 1
End While
Loop While m>0
Print 1
Decrement m by 1
End While
Step 5-> End Else
STOP示例
#include <stdio.h>
#include <math.h>
int main() {
int n =5, m=9;
if( m == n-1 ) { //If m is 1 greater than n then consecutive 0's and 1's
while( m > 0 && n > 0 ) { //Loop until all m's and n's
printf("01");
m--;
n--;
}
if ( n!=0 ) //Print the remaining 0
printf("0");
if( m!=0 ) //Print the remaining 1
printf("1");
}
else if ( (m < n-1) || m >= 2 * (n + 1) ) { //If this is true the sequence can't be made
printf("Can't have sequence for this\n");
} else {
while( m-n > 1 && n > 0 ) {
printf("1 1 0 ");
m -= 2;
n--;
}
while ( n > 0 ) {
printf("1 0 ");
n--;
m--;
}
while ( m > 0 ) {
printf("1 ");
m--;
}
}
return 0;
}输出结果
如果我们运行上面的程序,那么它将生成以下输出。
1 1 0 1 1 0 1 1 0 1 0 1 0 1
热门推荐
10 诗词送行祝福语大全简短
11 新房开工吉日祝福语简短
12 50多岁生日简短祝福语
13 安徽疫情祝福语简短英语
14 农民朋友发财祝福语简短
15 对生活祝福语简短精辟
16 搬家词简短祝福语朋友
17 女神结婚快乐祝福语简短
18 文学短句祝福语大全简短