Computer Science, asked by sirishapenjarla743, 1 year ago

We are all familiar with alpha numeric keypad that was used for messaging in earlier days. Given sequence of numbers 2-9 (both inclusive), find out the number of distinct alphabets that can be formed.

The rules of interpreting keypad strokes are as follows

1) Let’'s understand with example. 25 can mean AJ but it can also mean pressing button 5 two times. In that case it becomes K. See Examples section for better understanding.

2) Maximum number of distinct alphabets that can be formed cannot exceed 26

3) Alphanumeric keyboard used is as follows

· key 2 has letters "A B C"

· key 3 has letters "D E F"

· key 4 has letters "G H I"

· key 5 has letters "J K L"

· key 6 has letters "M N O"

· key 7 has letters "P Q R S"

· key 8 has letters "T U V"

· key 9 has letters "W X Y Z"

4) Input does not contain either 1 or 0 because no keypad buttons are associated with these numbers.

Answers

Answered by sumikanth
4

#include <iostream>

#include<malloc.h>

#include<string.h>

using namespace std;

int common(int a[],int b[],int count)

{

int k=0,l=0;

for(int i=0;i<count;i++)

{

for(int j=0;j<i;j++)

{

if(a[j]==a[i])

{

int z=0;

for(int m=0;m<l;m++)

{

if(a[m]==b[l])

z++;

}

if(z==0)

{

*(b+l)=a[i];

l++;

}

k++;

break;

}

}

}

return k;

}

int main()

{

char buf[40];

int b[26];

int c[26];

int k=0;

int *array;

int*l;

cin>>buf;

array = (int*)malloc(strlen(buf) * sizeof(int)); //Allocate Memory

int i=0,count=0;

do{

array[i] = buf[i]-'0';

count++;

}while(buf[++i]);

int x=common(array,b,count);

c[0]=b[0];

int m=1;

for(i=1;i<x;i++)

{

int s=0;

for(int j=0;j<i;j++)

{

if(c[j]==b[i])

{

s++;

break;

}

}

if(s==0)

{

c[m]=b[i];

m++;

}

}

int ghost[26];

int barbara[26];

int cot=0;

for(int i=0;i<(m-1);i++)

{

int kind=0;

for(int j=0;j<count;j++)

{

if(array[j]==c[i])

{

if(array[j-1]==7|| array[j-1]==9)

ghost[kind]=(array[j-1])%4;

else

ghost[kind]=(array[j-1])%3;

kind++;

}

}

cot+=common(ghost,barbara,kind);

}

cout<<(2*count-1-((m-1)+cot));

}

Similar questions