JOSHSTURGEON

1003

Mar 10th, 2017
377
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 2.23 KB | None | 0 0
  1. Đề bài: Cho dãy con gồm N phần tử, hãy tìm ra dãy con tăng dần gồm nhiều phần tử nhất.
  2. Dữ liệu vào được lấy từ tệp input.txt, tệp này gồm 2 dòng
  3. + dòng 1 : chứa số N
  4. + dòng 2: chứa N số nguyên, các số cách nhau ít nhất 1 dấu cách và có giá trị trong phạm vi từ [0, 100000]
  5. kết quả tìm được đưa ra tệp output.txt gồm 2 số là vị trí bắt đầu dãy con và độ dài của nó, các số cách nhau bởi 1 dấu cách
  6. trong trường hợp có nhiều dãy con tăng cùng có độ dài lớn nhất thì đưa ra vị trí nhỏ nhất
  7.  
  8. |-------------------------------------------------------|
  9. |       input.txt       |           output.txt          |
  10. |-------------------------------------------------------|
  11. |10                     |1 3                            |
  12. |6 8 9 2 4 6 4 2 3 1    |                               |
  13. |-------------------------------------------------------|
  14. function kt(b: mang;m,l:word): boolean;
  15. var ok: boolean;  {biến này sẽ cho biết dãy có là dãy tăng hay không, ok = true (dãy tăng), ok = false (dãy không tăng)}
  16.     i:word;   {hãy thử bỏ dòng này và chạy kết quả xem sao nhá}
  17. begin
  18.     ok :=true;  {giả sử ban đầu nó là dãy tăng}
  19.     i:=m;
  20.     while ok and (i<m+l-1) do  { ở đây ta so sánh phần tử thứ i và phần tứ thứ i +1 nên i chỉ chạy đến m+l-1}
  21.         if b[i] > b[i+1] then  ok := false {chỉ cần 1 phần tử lớn hơn phần tử đứng sau thì ta kết luận được ngay dãy không là dãy tăng (ok:=false)}
  22.                 else inc(i);
  23.     kt := ok; {cuối cùng dãy tăng hay không phụ thuộc vào biến ok }
  24. end;
  25.  
  26. {từ bài này, hãy vận dụng làm các bài sau:
  27. Bài 1: Hãy sửa bài trên để đưa ra vị lớn nhất
  28. |-------------------------------------------------------|
  29. |       input.txt       |           output.txt          |
  30. |-------------------------------------------------------|
  31. |10                     |4 3                            |
  32. |6 8 9 2 4 6 4 2 3 1    |                               |
  33. |-------------------------------------------------------|
  34. Bài 2: Đưa ra dãy con dài nhất mà các phần tử cùng dấuif a[i]
  35. Bài 3: Đưa ra dãy con dài nhất mà các phần tử đan dấu (trái dấu)
  36. Bài 4: Tìm dãy con có tăng (hoặc giảm) có tổng lớn nhất
  37. }
Advertisement