用C语言计算没有连续1的二进制字符串个数
任务是计算长度为n且没有连续1的二进制字符串的总数。
二进制数系统是一种数字表示技术。它是数字系统中最流行和最常用的。二进制系统用于表示二进制数量,这些数量可以用任何只有两种工作状态或可能条件的设备来表示。例如,开关只有两种状态:开或关。
在二进制系统中,只有两个符号或可能的数字值,即0和1。由任何只有2种工作状态或可能条件的设备表示。二进制字符串是指包含二进制值(即0或1)的字符串。
让我们用一个例子来理解我们必须做什么:
输入 - n = 2
输出 - 长度为2且没有连续1的二进制字符串的个数是:3
解释 - 00、01、10,所以只有3个长度为n且没有连续1的二进制字符串。
输入 - n = 7
输出 - 长度为7且没有连续1的二进制字符串的个数是 - 34
下面程序中使用的方法如下:
输入字符串长度n。
在count函数中,我们将计算没有连续1的二进制字符串,定义两个大小为n的数组arr[]和arr_2,以及一个变量temp来存储结果。
将两个数组的第0个元素赋值为1。
循环从i=1到i小于n。
在循环中,设置arr[i] = arr[i-1]+arr_2[i-1] 和 arr_2[i] = arr[i-1]。
设置temp = arr[n-1]+arr_2[n-1],然后打印temp。
示例
#include<stdio.h>
//create function to calculate binary strings without consecutive 1’s
void count(int num){
int arr[num];
int arr_2[num];
int i=0, temp=0;
arr[0] = arr_2[0] = 1;
//loop till number isn't equals to 0
for (i = 1; i < num; i++){
arr[i] = arr[i-1] + arr_2[i-1];
arr_2[i] = arr[i-1];
}
temp = arr[num-1] + arr_2[num-1];
printf("Count of binary strings without consecutive 1’s of %d is : %d",num,temp);
printf("
");
}
int main(){
//call the count function
count(10);
count(7);
count(1);
return 0;
}输出
如果我们运行上面的代码,我们将得到以下输出:
Count of binary strings without consecutive 1’s of 10 is : 144 Count of binary strings without consecutive 1’s of 7 is : 34 Count of binary strings without consecutive 1’s of 1 is : 2
广告
数据结构
网络
关系数据库管理系统(RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP