Hàm sẽ trả về true nếu tìm được hoán

  • No School
  • AA 1
  • 43

This preview shows page 35 - 39 out of 43 pages.

Hàm sẽ trả về ‘true’ nếu tìm được hoán vị tiếp theo (tức là chưa phải là hoán vị cao nhất theo thứ tự từ điển), ngược lại là ‘false’ Tham số: - first, last: giống như trong hàm “sort”. - comp: giống như trong hàm “sort”. Ví dụ: // next_permutation #include <iostream> #include <algorithm> using namespace std; int main () { int myints[] = {1,2,3}; cout << "The 3! possible permutations with 3 elements:\n" ; sort (myints,myints+3); do { cout << myints[0] << " " << myints[1] << " " << myints[2] << endl; } while ( next_permutation (myints,myints+3) ); return 0; } Output: The 3! possible permutations with 3 elements: 1 2 3 1 3 2 2 1 3 2 3 1 3 1 2 3 2 1
Image of page 35
STL for newbies – Điêu Xuân Mạnh – D10CN6 PTIT 36 Độ phức tạp: Số các phép so sánh, khoảng (last-first). 8.4. prev_permutation: Dạng 1: template <class BidirectionalIterator> bool prev_permutation (BidirectionalIterator first, BidirectionalIterator last ); Dạng 2: template <class BidirectionalIterator, class Compare> bool prev_permutation (BidirectionalIterator first, BidirectionalIterator last, Compare comp); Ý nghĩa: - Biến đổi đoạn phần tử về hoán vị trước đó của nó theo thứ tự từ điển. Phép toán so sánh của đoạn phần tử mặc định là toán tử ‘<’ trong dạng 1, hoặc là ‘comp’ trong dạng 2. - Hàm sẽ trả về ‘true’ nếu tìm được hoán vị trước đó (tức là chưa phải là hoán vị thấp nhất theo thứ tự từ điển), ngược lại là ‘false’ Tham số: - first, last: giống như trong hàm “sort”. - comp: giống như trong hàm “sort”. Ví dụ: // prev_permutation #include <iostream> #include <algorithm> using namespace std; int main () { int myints[] = {1,2,3}; cout << "The 3! possible permutations with 3 elements:\n" ; sort (myints,myints+3); reverse (myints,myints+3); do { cout << myints[0] << " " << myints[1] << " " << myints[2] << endl; } while ( prev_permutation (myints,myints+3) ); return 0; } Output: The 3! possible permutations with 3 elements: 3 2 1 3 1 2 2 3 1 2 1 3 1 3 2 1 2 3 Độ phức tạp: Số các phép so sánh, khoảng (last-first).
Image of page 36
STL for newbies – Điêu Xuân Mạnh – D10CN6 PTIT 37 9. Một số bài tập áp dụng: Bài 1: Hoán vị kế tiếp (Link ): Trong bài này, bạn hãy viết chương trình nhận vào một chuỗi (có thể khá dài) các ký tự số và đưa ra màn hình hoán vị kế tiếp của các ký tự số đó (với ý nghĩa là hoán vị có giá trị lớn hơn tiếp theo nếu ta coi chuỗi đó là một giá trị số nguyên). Chú ý: Các ký tự số trong dãy có thể trùng nhau. Ví dụ: 123 -> 132 279134399742 -> 279134423799 Cũng có trường hợp sẽ không thể có hoán vị kế tiếp. Ví dụ như khi đầu vào là chuỗi 987. Dữ liệu vào Dòng đầu tiên ghi số nguyên t là số bộ test (1 ≤ t ≤ 1000). Mỗi bộ test có một dòng, đầu tiên là số thứ tự bộ test, một dấu cách, sau đó là chuỗi các ký tự số, tối đa 80 phần tử. Dữ liệu ra Với mỗi bộ test hãy đưa ra một dòng gồm thứ tự bộ test, một dấu cách, tiếp theo đó là hoán vị kế tiếp hoặc chuỗi “BIGGEST” nếu không có hoán vị kế tiếp. Example Input: 3 1 123 2 279134399742 3 987 Output: 1 132 2 279134423799 3 BIGGEST Hướng dẫn: - Bài này có thể sử dụng thuật toán sinh hoán vị kế tiếp. Nhưng cách đơn giản nhất là áp dụng hàm next_permutation. - Chương trình mẫu:
Image of page 37
STL for newbies – Điêu Xuân Mạnh – D10CN6 PTIT 38 #include <iostream> #include <string> using namespace std; string nextPermutation(string s) { if (next_permutation(s.begin(),s.end())) return s; else return "BIGGEST" ; }
Image of page 38
Image of page 39

You've reached the end of your free preview.

Want to read all 43 pages?

  • Fall '19

What students are saying

  • Left Quote Icon

    As a current student on this bumpy collegiate pathway, I stumbled upon Course Hero, where I can find study resources for nearly all my courses, get online help from tutors 24/7, and even share my old projects, papers, and lecture notes with other students.

    Student Picture

    Kiran Temple University Fox School of Business ‘17, Course Hero Intern

  • Left Quote Icon

    I cannot even describe how much Course Hero helped me this summer. It’s truly become something I can always rely on and help me. In the end, I was not only able to survive summer classes, but I was able to thrive thanks to Course Hero.

    Student Picture

    Dana University of Pennsylvania ‘17, Course Hero Intern

  • Left Quote Icon

    The ability to access any university’s resources through Course Hero proved invaluable in my case. I was behind on Tulane coursework and actually used UCLA’s materials to help me move forward and get everything together on time.

    Student Picture

    Jill Tulane University ‘16, Course Hero Intern

Stuck? We have tutors online 24/7 who can help you get unstuck.
A+ icon
Ask Expert Tutors You can ask You can ask You can ask (will expire )
Answers in as fast as 15 minutes
A+ icon
Ask Expert Tutors