Ardıcıl 1-lər olmadan bütün ikili simləri yaradın

Çətinlik səviyyəsi Asan
Tez-tez soruşulur Amazon GE Healthcare Snapdeal Target Corporation
SimBaxılıb 581

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.

Problem bəyanat

"Ardıcıl 1-lər olmadan bütün ikili sətirləri yaradın" məsələsində bir verdik tam k, bütün ikili yazdırmaq üçün bir proqram yaz strings ardıcıl 1'siz k ölçüsündə.

Giriş Formatı

Bir tam ədədi olan ilk və yalnız bir sətir.

Çıxış formatı

K boşluğu ilə ayrılmış bütün mümkün uzunluqlu ipləri (”“) çap edin.

Məhdudiyyətlər

  • 1 <= N <= 15

misal

4
0000 0001 0010 0100 0101 1000 1001 1010

İzahat: Burada əvvəlcə uzunluğu 4 olan bütün simləri görürük.

0: 0000

1: 0001

2: 0010

3: 0011

4: 0100

5: 0101

6: 0110

7: 0111

8: 1000

9: 1001

10: 1010

11: 1011

12: 1100

13: 1101

14: 1110

15: 1111

İndi 3, 6, 7, 11, 12, 13, 14 və 15-in meyarlara riayət etmədiyini asanlıqla görürük, çünki hamısı ardıcıl 1-ə malikdir. Beləliklə, son cavabımız 0000, 0001, 0010, 0100, 0101, 1000, 1001, 1010-dur.

Alqoritm

  • Yaradılan sətrin ölçüsü verilən ölçüyə bərabər olarsa, sətri çap edin.
  • Əvvəlki simvol '1' olduqda, sətrin sonuna '0' qoyun və funksiyanı rekursiv olaraq çağırın.
  1. s [n] = '0'.
  2. stringsSizeK (k, s, n + 1)
  • Əvvəlki simvol '0' olduqda, sətrin sonunda '1' və '0' işarələrini qoyun

1. s [n] = '0'
2. stringsSizeK (k, s, n + 1)
3. s [n] = '1'
4. stringsSizeK (k, s, n + 1)

  • Sətrin uzunluğu K-ya bərabərdirsə, sətri çap edin.

Həyata keçirilməsi

Ardıcıl 1-lər olmadan bütün ikili simləri yaratmaq üçün C ++ proqramı

#include <bits/stdc++.h>
using namespace std;

void strings_form(int K, char s[], int n)
{
    if(n==K)
    {
        s[n] = '\0' ;
        cout<<s<<" ";
        return;
    }
    if(s[n-1]=='1')
    {
        s[n]='0';
        strings_form(K,s,n+1);
    }
    if(s[n-1]=='0')
    {
        s[n]='0';
        strings_form(K,s,n+1);
        s[n]='1';
        strings_form(K,s,n+1) ;
    }
}
 
void print_strings(int K)
{
    if(K<=0)
    {
        return;
    }
    char s[K];
    s[0]='0' ;
    strings_form(K,s,1) ;
    s[0]='1';
    strings_form(K,s,1);
}
 
int main()
{
    int N;
    cin>>N;
    print_strings(N);
    return 0;
}

Ardıcıl 1-lər olmadan bütün ikili simləri yaratmaq üçün Java proqramı

import java.util.Scanner;

class sum {
    
    static void strings_form(int k, char s[], int n)
    {
        if(n==k)
        {
            s[n]='\0';
            System.out.print(s);
            System.out.print(" ");
            return;
        }
        if(s[n-1]=='1')
        {
            s[n]='0';
            strings_form(k,s,n+1);
        }
        if(s[n-1]=='0')
        {
            s[n]='0';
            strings_form(k,s,n+1);
            s[n]='1';
            strings_form(k,s,n+1);
        }
    }
    static void print_strings(int n) 
    {
        if(n<=0)
        {
            return;
        }
        char s[] = new char[n+1];
        s[0]= '0';
        strings_form(n,s,1);
        s[0]= '1';
        strings_form(n,s,1);
    }
    public static void main(String[] args) 
    {
        Scanner sr= new Scanner(System.in);
        int n = sr.nextInt();
        print_strings(n);
    } 
}
5
00000 00001 00010 00100 00101 01000 01001 01010 10000 10001 10010 10100 10101

Ardıcıl 1-lər olmadan bütün ikili simləri yaratmaq üçün mürəkkəblik analizi

Zamanın mürəkkəbliyi

0 (2 ^ n) burada n, simli uzunluğu göstərən bizə verilən giriş nömrəsidir.

Kosmik Mürəkkəblik

o (n) burada n bizə verilən giriş nömrəsidir. Burada simli saxlamaq üçün bir char array elan edirik.

arayış

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