用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
广告