用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

更新于:2020年6月6日

242 次浏览

开启你的职业生涯

完成课程获得认证

开始学习
广告