Mình chỉ nói đơn giản thế này nha bạn, muốn xây dựng thuật toán gì cũng phải có cơ sở vững chắc (logic toán học), các nhận định để đưa ra giải thuật cũng phải dựa trên đặc trưng của dữ liệu
Bạn phải chứng minh là nó đúng, chứ không phải nghĩ là nó đúng, vì 2 việc hoàn toàn khác nhau, nghĩ nó đúng nhưng chưa chắc nó đã đúng. Ví dụ: đường ray xe lửa, bạn nhìn thì nó giao nhau ở phía xa nhưng thực chất nó là 2 đường thẳng song song. Và ở đây không có tính chất MIN tổng bằng tổng các MIN
Bài này đành cù nhầy dùng phương pháp liệt kê tất cả trường hợp tính rồi đem so sánh với nhau lấy thời gian nhỏ nhất
Khái quát hóa bài toán:
Cho a[n] = {a1, a2, a3, a4 ..., an} và b[n] rỗng
Di chuyển 2 phần tử a[n] sang b[n] và lấy 1 phần tử b[n] chuyển lại cho a[n], thực hiện cho đến khi nào phần tử a[n] chuyển hết sang b[n]
Số lần di chuyển sẽ là: n - 2 + 1 = n - 1
Lần 1: nC2 => 2C1
Lần 2: (n-1)C2 => 3C1
Lần 3: (n-2)C2 => 4C1
...
Lần i: (n - i + 1)C2 => (i+1)C1
...
Lần n-2: 3C2 => (n-1)C1
Lần n-1: 2C2
với n = 7 có thể tính nhẩm ra 7C2 x 2C1 x 6C2 x 3C1 X 5C2 x 4C1 x 4C2 x 5C1 x 3C2 x 6C1 x 2C2 = 40.824.000 cách sắp xếp (mà lại cần tìm 1 cách có time ngắn nhất trong đống đó), bài này mà hỏi bên toán tin ứng dụng thì cũng chưa chắc đã có lời giải hợp lý
Bạn phải chứng minh là nó đúng, chứ không phải nghĩ là nó đúng, vì 2 việc hoàn toàn khác nhau, nghĩ nó đúng nhưng chưa chắc nó đã đúng. Ví dụ: đường ray xe lửa, bạn nhìn thì nó giao nhau ở phía xa nhưng thực chất nó là 2 đường thẳng song song. Và ở đây không có tính chất MIN tổng bằng tổng các MIN
Bài này đành cù nhầy dùng phương pháp liệt kê tất cả trường hợp tính rồi đem so sánh với nhau lấy thời gian nhỏ nhất
Khái quát hóa bài toán:
Cho a[n] = {a1, a2, a3, a4 ..., an} và b[n] rỗng
Di chuyển 2 phần tử a[n] sang b[n] và lấy 1 phần tử b[n] chuyển lại cho a[n], thực hiện cho đến khi nào phần tử a[n] chuyển hết sang b[n]
Số lần di chuyển sẽ là: n - 2 + 1 = n - 1
Lần 1: nC2 => 2C1
Lần 2: (n-1)C2 => 3C1
Lần 3: (n-2)C2 => 4C1
...
Lần i: (n - i + 1)C2 => (i+1)C1
...
Lần n-2: 3C2 => (n-1)C1
Lần n-1: 2C2
với n = 7 có thể tính nhẩm ra 7C2 x 2C1 x 6C2 x 3C1 X 5C2 x 4C1 x 4C2 x 5C1 x 3C2 x 6C1 x 2C2 = 40.824.000 cách sắp xếp (mà lại cần tìm 1 cách có time ngắn nhất trong đống đó), bài này mà hỏi bên toán tin ứng dụng thì cũng chưa chắc đã có lời giải hợp lý