用 C 语言计算没有连续 1 的二进制字符串的数量
cserver side programmingprogramming
给定任务是计算所有长度为 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],然后打印温度。
示例
#include<stdio.h> //创建函数来计算不含连续 1 的二进制字符串 void count(int num){ int arr[num]; int arr_2[num]; int i=0, temp=0; arr[0] = arr_2[0] = 1; //循环直到数字不等于 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(){ //调用计数函数 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