Find all possible interpretations of an array of digits
Examples
Input: {1, 1} Output: ("aa", 'k") [2 interpretations: aa(1, 1), k(11)] Input: {1, 2, 1} Output: ("aba", "au", "la") [3 interpretations: aba(1,2,1), au(1,21), la(12,1)] Input: {9, 1, 8} Output: {"iah", "ir"} [2 interpretations: iah(9,1,8), ir(9,18)]
#include<iostream> #include<math.h> #include<limits.h> #include<stdio.h> #include<string.h> #include<stdlib.h> using namespace std; #define ll long long int #define l long long int #define repin(i,a,b) for(i=a;i>=b;i--) #define rep(i,a,b) for(i=a;i<=b;i++) char alphabet[] =" abcdefghijklmnopqrstuvwxyz"; void printalldecoding(int arr[],int index,char* str,int n){ if(n<=0) { str[index]='\0'; cout<<str<<endl; return; } int ind; if(n>=1){ ind=arr[0]; str[index]=alphabet[ind]; printalldecoding(arr+1,index+1,str,n-1); } if(n>=2) { ind=arr[0]*10+arr[1]; if(ind<=26) { str[index]=alphabet[ind]; printalldecoding(arr+2,index+1,str,n-2); } } } int main() { char str[100]; int arr[] = {1, 2, 2, 1}; int n= sizeof(arr)/sizeof(arr[0]); printalldecoding(arr,0,str,n); }
output :-
abba abu ava lba lu
No comments:
Post a Comment