01/10/2018, 01:01

Bài tập c++ về sắp xếp các đoạn nối tiếp nhau

Cho mình hỏi: sau khi sắp xếp được các phần tử a,b (theo thứ tự tăng dần của a) thì phải làm tiếp như thế nào?

Nguyễn Xuân Phúc viết 03:03 ngày 01/10/2018

“tìm số lượng tối đa K đoạn thẳng”, là đếm số lượng nhóm K đoạn gối nhau liên tiếp, hay là tìm K lớn nhất?

Newbie viết 03:07 ngày 01/10/2018

đề bài yêu cầu tìm k lớn nhất

Nguyễn Xuân Phúc viết 03:08 ngày 01/10/2018
  • sort lại tăng dần theo điểm kết thúc bj
  • sau đó sử dụng quy hoạch động: F[i] là số đoạn liên tiếp dài nhất gối nhau, mà vị trí kết thúc của đoạn cuối cùng là i. Ban đầu F[i] = 0 với mọi i. Sau đó với mỗi đoạn [aj, bj]. Lúc đó ta có 2 trường hợp:
    • Nếu không chọn đoạn này, F[b<sub>j</sub>] không đổi.
    • Nếu chọn đoạn: F[b<sub>j</sub>] = F[aj - 1] + 1 (nếu nó là đoạn đầu tiên trong các đoạn gối nhau, thì hiển nhiên F[aj - 1] = 0 và F[b<sub>j</sub>] = 1 tức chính nó).
    • Vậy tổng quát là F[b<sub>j</sub>] = (F[b<sub>j</sub>], F[aj - 1] + 1)
  • Để lấy kết quả thì duyệt lại trên mảng F và tìm F[i] lớn nhất.
    Lưu ý: nếu sử dụng pascal thì có thể dùng trực tiếp dữ liệu input. Nếu sử dụng các ngôn ngữ như C++, Java thì trước khi thực hiện DP, cần dời trục tọa độ các đoạn này, để các đoạn đoạn [aj, bj] đều không âm.
superuser10 viết 03:15 ngày 01/10/2018

Mình k phải chuyên ngành IT… Xin hỏi học mấy cấu trúc giải thuật và dữ liệu đó có thể làm gì khi lập trình soft. Mình học điện, làm nhúng, mới bước chân vô nghề. Mong các bác chỉ giáo. TKS

Nguyễn Xuân Phúc viết 03:12 ngày 01/10/2018

Những thuật toán nói chung thì sẽ giúp bạn tăng khả năng tư duy giải quyết vấn đề.
Ngoài ra thì một số thuật toán nâng cao có thể áp dụng để giải quyết những bài toán cụ thể: ví dụ bài toán tìm đường, bài toán lập lịch điều phối giao hàng, lên thời khóa biểu, …
Nếu bạn làm nhúng về điện thì sẽ ít gặp thuật toán, chứ nếu mình nhớ k nhầm, nếu nhúng device, nhúng về các smart device thì dùng thuật toán nhiều lắm

Bài liên quan
0