C ++中相邻字符相差一的字符串计数

给我们一个数字作为输入。目的是计算长度为num的可能字符串的数量,以使所有相邻字符的ascii值之间的差为1。

如果num为2,则字符串将为“ ab”,“ ba”,“ bc”,“ cb”,……..“ yz”,“ zy”。

让我们用例子来理解

输入-num = 3

输出-相邻字符相差一的字符串数为-98

说明-一些示例字符串是:“ abc”,“ aba”,“ cde” .....“ xyx”,“ zyz”,“ xyz”。

输入-num = 2

输出-相邻字符相差一的字符串数为-50

说明-一些示例字符串是:“ ab”,“ ba”,“ cd” .....“ xy”,“ zy”,“ yz”。

以下程序中使用的方法如下

对于长度= 2。

以a =“ ab”开头的字符串

以b =“ ba”,“ bc”开头的字符串

以c =“ cd”,“ cb”开头的字符串......

对于长度= n。

以a开头的字符串=以b开头的长度为n-1的字符串数的方式

以b开头的字符串=以a或c开头的长度为n-1的字符串的数量

以c开头的字符串=以b或d开头的长度为n-1的字符串数的方式

我们将使用动态编程解决此问题。

取一个数组arr [num + 1] [27]。包含许多长度为i的字符串,这些字符串以arr [i] [j]中的字母数字j开头。对于字符串“ a”,“ b” ...“ z”,所有arr [1] [j]均为1。

对于arr [2到num + 1] [0到25]休息,将arr [i] [j] = arr [i-1] [j + 1]设为j = 0。其他集arr [i] [j] = arr [i-1] [j-1] + arr [i-1] [j + 1];

结果将是第num行计数的总和。

  • 取输入整数num

  • 函数difference_strings(int num)获取num并返回相邻字符之间的差异为一的字符串的计数

  • 将初始计数设为0。

  • 用全0初始化arr [num + 1] [27]。

  • 用全1初始化arr [1] [0至25]。

  • 遍历2D数组arr [] [],使用两个for循环从第2行到最后一行,并使用0到25列表示所有26个字母。

  • 对于j = 0,起始字符为'a'。将当前计数设置为arr [i] [j] = arr [i-1] [j +1];

  • 否则设置arr [i] [j] =(arr [i-1] [j-1] + arr [i-1] [j + 1])

  • 现在,在上述循环结束之后,遍历最后一行并添加arr [num] [0至25]进行计数。

  • 返回计数作为结果。

示例

#include <bits/stdc++.h>

using namespace std;

int difference_strings(int num){

   long int count = 0;

   long int arr[num + 1][27];

   memset(arr, 0, sizeof(arr));

   for (int i = 0; i <= 25; i++){

      arr[1][i] = 1;

   }

   for (int i = 2; i <= num; i++){

      for (int j = 0; j <= 25; j++){

         if (j == 0){

            arr[i][j] = arr[i - 1][j + 1];

         }

         else{

            arr[i][j] = (arr[i - 1][j - 1] + arr[i - 1][j + 1]);

         }

      }

   }

   for (int i = 0; i <= 25; i++){

      count = (count + arr[num][i]);

   }

   return count;

}

int main(){

   int num = 2;

   cout<<"Count of strings where adjacent characters are of difference one are: "<<difference_strings(num);

   return 0;

}

输出结果

如果我们运行上面的代码,它将生成以下输出-

Count of strings where adjacent characters are of difference one are: 50

以上是 C ++中相邻字符相差一的字符串计数 的全部内容, 来源链接: utcz.com/z/340769.html

回到顶部