Verilmiş iki simli bütün arayışları çap edin


SimBaxılıb 390

Sistem dizaynı ilə bağlı müsahibə sualları o qədər açıq ola bilər ki, düzgün hazırlaşmağı bilmək çox çətindir. İndi satın aldıqdan sonra Amazon, Microsoft və Adobe-nin dizayn dövrlərini sındıra bilirəm Bu kitabı. Gündəlik bir yenidən nəzərdən keçirin dizayn sualı və söz verirəm ki, dizayn dövrünü sındıra bilərsiniz.

İki s1 və s2 sətri verildiyi halda, verilən iki sətrin bütün sətirlərini çap edəcək bir funksiya yazın.

Burada interleaving string ayrı-ayrı strings eyni qaydada olan bir simli edir.

Aşağıdakı nümunədə 'A' hər zaman 'B' və 'C' hər zaman 'D' əvvəl gəldiyini görə bilərik

misal

INPUT
s1 = "AB"
s2 = "CD"

ÇIXDI
ABCD, ACBD, ACDB, CABD, CADB, CDAB

Alqoritm

1. Əvvəlcə 's1' dəki ilk işarəni düzəldin və digər simvolları rekursiv şəkildə tapın
yəni yuxarıdakı misal üçün əldə edirik
ABCD, ACBD, ACDB

2. İndi “s2” -də ilk işarəni düzəldin və digər simvolları təkrarlayın
yəni yuxarıdakı misal üçün əldə edirik
CABD, CADB, CDAB

#include <bits/stdc++.h>
using namespace std;
 
//Recursive function to print all the IL strings 
void printIlStrings(char *s1, char *s2, char *res, int m, 
                    int n, int i)
{
  //If all the characters of s1 and s2 are in res, then print res
  if (m==0 && n==0)
  {
    cout<<res<<endl;
  }
  //If there are chars in m, then include the first char in res
  //and recur for other char in m
  if (m != 0)
  {
    res[i] = s1[0];
    printIlStrings(s1 + 1, s2, res, m-1, n, i+1);
  }
  //If there are chars in n, then include the first char in res
  //and recur for other char in n
  if (n != 0)
  {
    res[i] = s2[0];
    printIlStrings(s1, s2+1, res, m, n-1, i+1);
  }
   
}
 
//In this function we will initailixe res string and will call recursive function
void printIls (char *s1, char *s2, int m, int n)
{
  //Initializing res string
  char *res = new char[m+n+1];
  //setting the terminator of the res string
  res[m+n] = '\0';

  printIlStrings(s1, s2, res, m, n, 0);
 
  // free memory to avoid memory leak
  free(res);
    
}
 

int main()
{
  char s1[] = "AB";
  char s2[] = "CD";
  printIls (s1, s2, strlen(s1), strlen(s2));
  return 0;
    
}

Yoxla

 

Crack Sistemi Dizayn Müsahibələri
Translate »