Trả về hoán vị của một chuỗi C++ bằng cách sử dụng đệ quy

Một thẻ đã tồn tại với tên chi nhánh được cung cấp. Nhiều lệnh Git chấp nhận cả tên thẻ và tên nhánh, vì vậy việc tạo nhánh này có thể gây ra hành vi không mong muốn. Bạn có chắc chắn muốn tạo nhánh này không?

Trong bài viết này, tôi sẽ thảo luận về Hoán vị chuỗi trong ngôn ngữ C với các ví dụ. Vui lòng đọc bài viết trước của chúng tôi, nơi chúng tôi đã thảo luận về Cách kiểm tra xem 2 chuỗi có phải là đảo chữ trong ngôn ngữ C với các ví dụ hay khôngHoán vị chuỗi trong C

Trong bài viết này, chúng ta sẽ xem cách tìm hoán vị của một chuỗi. Trước hết ta hiểu thế nào là hoán vị. Sau đó, chúng ta sẽ xem cách tìm hoán vị. Có nhiều hơn một phương pháp. Trong bài viết này, chúng tôi sẽ chỉ cho bạn một phương pháp

Ở đây chúng tôi đã lấy một chuỗi 'ABC'. Và chúng tôi muốn tất cả các hoán vị với tất cả các sắp xếp của 'ABC'. Tổng số hoán vị hoặc cách sắp xếp chúng ta có thể có của chuỗi 'ABC' là n. có nghĩa là 3. Đó là 6 [3*2*1]. Vì vậy, có thể có 6 cách sắp xếp cho chuỗi 'ABC'. Hoán vị là

  1. ABC
  2. ACB
  3. BẮC
  4. BCA
  5. TƯLĐTT
  6. TAXI

Vì vậy, có tổng cộng sáu cách sắp xếp có thể có của các bảng chữ cái đó của chuỗi 'ABC'. Bây giờ chúng ta muốn có tất cả sự sắp xếp này, vậy làm thế nào để có được sự sắp xếp này? . Đầu tiên, hãy để chúng tôi giải thích một số điều quan trọng. For that, we will create some procedure or we will create some logic for generating all these permutations. First, let us explain some important things.

Ở đây chúng tôi đang tạo một cây cho hoán vị của một chuỗi. Vì vậy, ở đây bảng chữ cái đầu tiên là 'A'

Bảng chữ cái tiếp theo là 'B' và bảng chữ cái tiếp theo là 'C'. Và chúng tôi đã nhận được kết quả 'ABC' nếu chúng tôi làm theo cái này. Vì vậy, đây là chúng ta đang hình thành một cái cây. Bây giờ từ đây quay trở lại. Sau đó 'B' chỉ có một bảng chữ cái. Một lần nữa, quay lại 'A'. Chúng ta có thể tiếp tục 'B' cũng như 'C' vì vậy 'B' chúng ta đã thực hiện. Vì vậy, chúng ta hãy tiếp tục 'C' sau đó từ 'A' chúng ta đã tiếp tục 'C' vậy phần còn lại 'B' còn lại

Tại đây ‘ACB’ sẽ hình thành. Chúng tôi có hai sự sắp xếp khác nhau. Vì vậy, chúng ta có thể hiển thị các sắp xếp này dưới dạng cây. Sau 'A', cả 'B' và 'C' đều kết thúc. Vì vậy, chúng ta hãy chuyển sang chữ cái tiếp theo 'B'

Chữ cái tiếp theo phải là 'A' hoặc 'C'. Đầu tiên, chúng tôi sẽ lấy 'A' sau đó chúng tôi sẽ lấy 'C'

Vì vậy, có một hoán vị khác được hình thành đó là 'BAC'. Bây giờ hãy quay lại, chỉ còn lại chữ 'C' vì 'B' đã được lấy

Bây giờ chúng tôi đã có 'BCA'. Vì vậy, chúng ta hãy quay trở lại điểm xuất phát chính và lấy chữ cái tiếp theo 'C'

Bây giờ chúng tôi đã lấy chữ cái còn lại 'C'. Bây giờ, những gì còn lại dưới 'C'? . Vì vậy, trước tiên chúng ta sẽ chuyển đến 'A'

Ở đây chúng tôi có một hoán vị khác 'CAB'. Bây giờ quay lại 'C' và lấy 'B' vì 'A' đã lấy

Bây giờ chúng tôi đã có hoán vị cuối cùng của mình 'CBA'. Vì vậy, chúng tôi đã có sáu hoán vị. Ở đây chúng tôi đã làm hai việc Theo dõi ngược và Lực lượng vũ phu

  1. Theo dõi ngược có nghĩa là nếu chúng ta quay lại và thực hiện một tuyến đường khả thi khác trên cây
  2. Brute Force có nghĩa là tìm ra tất cả các hoán vị có thể

Nếu chúng tôi có bất kỳ thủ tục nào và trong thủ tục đó, chúng tôi muốn quay lại và thực hiện một lộ trình khác thì các thủ tục đó có thể được thực hiện bằng cách sử dụng Đệ quy. Chúng tôi phải sử dụng Đệ quy để đạt được Theo dõi ngược và với sự trợ giúp của Theo dõi ngược, chúng tôi đang thực hiện Brute Force. Bây giờ hãy xem phần mã

Chương trình hoán vị chuỗi trong ngôn ngữ C bằng vòng lặp và đệ quy

#include

#include

void hoán vị [char s[], int k]

{

      tĩnh int A[10] = { 0 };

      tĩnh char Res[10];

      int i;

      nếu [s[k] == ‘\0’]

{

          Trả lời[k] = ‘\0’;

          printf [“%s\n”, Res];

}

khác

{

          for [int i = 0; s[ . = i] != ‘\0’;]

{

              nếu [A[i] == 0]

{

                     Res[k] = s[i];

                       A[i] = 1;

Chủ Đề