Nhờ chuyển yêu cầu sau thành chương trình
Em đang làm bài báo cáo toán muốn nhờ mọi người chuyển yêu cầu sau thành 1 chương trình
Thuật toán sinh ra các hoán vị gồm các bước:
B1:[Khởi tạo chuỗi] Đặt si=i(với i=1,2………n).
B2:[Xuất hoán vị đầu tiên]Xuất choỗi s=s1s2….sn.
B3:[Lặp]với mỗi i=2,3……,n!thực hiện các bước sau:
3.1:Tìm chỉ số lớn nhất thỏa mãn sm<sm+1
3.2:Tìm chỉ số lớn nhất k thỏa mãn sk>sm
3.3:Hoán vị hai phần tử sm và sk
3.4:Đảo ngược thứu tự của các phần tử sm+1,….sn.
3.5:Xuất s.
Mình muốn nhờ mọi người code trên càng nhiều ngôn ngữ càng tốt(Pascal,C#,C,C++…).Mình muốn chứng minh rằng toán rời rạc có thể áp dụng vào tin học rất nhiều.
Cảm ơn mọi người rất nhiều
Có gì đó sai sai
sai dư lào bạn,mình chưa hiểu ý bạn lắm???
Bạn code được ngôn ngữ nào rồi thì quăng lên đây. Mọi người sẽ chuyển qua ngôn ngữ khác cho bạn. Nếu chưa code được bạn có thể học python hoặc C/C++ trước.
Nếu bạn làm báo cáo hãy thử search permutation generator algorithm + tên ngôn ngữ.
Good luck
Cảm ơn bạn,một cách hay
C++11: http://rextester.com/VOSM33438
mỗi bước 1 dòng thôi
Cảm ơn bạn nhé
Chúc sức khỏe
iota là sao bạn nhỉ,có gì sai sao???
> Error 1 error C2039: 'iota' : is not a member of 'std' c:\users\administrator\documents\visual studio 2013\projects\1510289_lab08\test-sinh hoan vi\test-sinh hoan vi\source.cpp 11 1 Test-Sinh Hoan Vi
vậy thêm
#include <numeric>
vô nữahoàn hảo cảm ơn bạn rất nhiều
Xin phiền bạn chút xíu:
vòng lặp này là sao bạn nhỉ
for (int n : s)
Mình mới chỉ biết vòng lặp for cơ bản,nhìn cái này chưa hiểu lắm mong bạn chỉ bảo cho :))
nó gọi là “range-based for loop” có trong C++11, để viết tắt cách lướt lần lượt tất cả các phần tử trong 1 container.
vd với
s
làstd::vector
(mảng động) thì thay vì viếtthì với range-based for loop bạn chỉ cần viết
đơn giản hơn, lại vừa dễ hiểu hơn cái i = 0; i < ; i++ kia.int n : s hiểu là int n trong s.
Ra z cảm ơn bạn nhiều nhé