Count Possible Decodings of a given Digit Sequence in C++

Hello Learners, today we will count the total number of ways a sequence of digits can be decoded using C++ programming language.

Let’s assume that numbers are coded as

A = 1, B = 2, C = 3 , ....... , Z = 26.

Since only 26 alphabets are known A-Z, numbers ranging from 1 to 26 can be converted to corresponding alphabets.

 

For example:-

1. A sequence of numbers =  “1231”

Possible decodings are   (1, 2, 3, 1) = ABCA , (12, 3, 1) = LCA  and (1, 23, 1) = AWA.  So, “1231” can be decoded in three ways.

2. A sequence of numbers = “1502”

The given a sequence of string can be decoded in zero way because ‘0’ cannot be converted to the alphabet.

C++ Code: Count Possible Decodings of a given Digit Sequence

#include<iostream>
#include<string.h>
using namespace std;

int countDecoding(char *digitSequence, int n)
{
  int count[n+1], a, b;
      count[0] = 1;
      count[1] = 1;
  
  for(int i=1;i<=n;i++)
  {
        if(digitSequence[i-1] == '0')
          {
             return 0;
          }

        else
          {
            a=digitSequence[i]-48;
            b=digitSequence[i-1]-48;
            if(a>0 && a<=26)
                 count[i+1]=count[i];
            if((a + b*10)>0 && (a + b*10) <=26)
                 count[i+1] +=count[i-1];
          }
  }
  return count[n];
}


//Driver function
int main()
{
  char digitSequence[20]; //use array size as per need
  cout<<"Input a sequence of numbers : ";
  cin >> digitSequence;
  int n = strlen(digitSequence);
  cout<<"Total number of decodings possible of the sequence "<<digitSequence<<" are "<<countDecoding(digitSequence,n) << endl;
  return 0;
}

Leave a Reply

Your email address will not be published. Required fields are marked *