用 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

相关文章