Verilmiş bir sətrin bütün permutasiyalarını çap etmək üçün bir proqram yazın


SimBaxılıb 1511

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.

Bir simli nəzərə alaraq, simlin bütün permutasiyalarını çap edəcək bir funksiya yazın

misal

INPUT
s = "ABC"

ÇIXDI
ABC, ACB, BAC, BCA, CBA, CAB

Zaman Mürəkkəbliyi: O (n * n!)

Qeyd: N var! permutations və bir permutation yazmaq üçün O (n) vaxtı lazımdır.

Alqoritm

Permut ()

1. Sətrin içindəki bütün elementləri seçsək, teh simli yazdıraq. başqa,

2. Sətirdəki hər bir simvol üçün

a. Xarakteri düzgün yerə qoyun

     b. + 1 mövqeyindən başlayaraq qalan simvolları dəyişdirin

C ++ Proqramı

#include <bits/stdc++.h>
using namespace std;
 
/* Function to swap values at two pointers */
void swap(char *x, char *y)
{
  char temp;
  temp = *x;
  *x = *y;
  *y = temp;
    
}
 
//This function will print all the permutations
//Takes string, starting index and ending index as the arguments
void permute(char *a, int start, int end)
{
  int i;
  if (start == end)
  {  
      cout<<a<<endl;
  }
  else
  {
    for (i = start; i <= end; i++)
    {
      //swap the characters
      swap((a+start), (a+i));
      //recursively call
      permute(a, start+1, end);
      swap((a+start), (a+i)); //backtrack
    }
  }   
}
 

int main()
{
    char str[] = "ABC";
    int n = strlen(str);
    permute(str, 0, n-1);
    return 0;
}

Yoxla

 

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