Chào mừng bạn đến với Selfomy Hỏi Đáp, hãy Hỏi bài tập hoặc Tham gia ngay
+1 thích
525 lượt xem
trong Tin học lớp 9 bởi thanhtrong ● Ban Quản Trị Thạc sĩ (6.2k điểm)

Trên hai đường thẳng song song L1 và L2 người ta đánh dấu trên mỗi đường N điểm. Các điểm trên đường thẳng L1 được đánh số từ 1 đến N từ trái qua phải, còn các điểm trên đường thẳng L2 được đánh số bằng p1, p2, ..., pn cũng từ trái qua phải với p1, p2, ..., pn là một hoán vị của 1, 2, ..., n (hình vẽ dưới dây cho 1 ví dụ khi n=9):

Ta gọi các số gán cho các điểm là số hiệu của chúng. Cho phép nối hai điểm trên hai đường thẳng có cùng số hiệu.

Yêu cầu: Tìm cách nối được nhiều cặp điểm nhất với điều kiện các đoạn nối không được cắt nhau.

Dữ liệu: Vào từ file văn bản WIRES.INP:

  • Dòng đầu tiên chứa số nguyên dương N (Ns£1000)
  • Dòng thứ hai chứa các số nguyên p1, p2, ..., pn cách nhau bởi dấu trắng

Kết quả: Ghi ra file văn bản WIRES.OUT:

  • Dòng đầu tiên chứa k là số lượng các đoạn nối tìm được
  • Dòng tiếp theo chứa k số hiệu của các đầu mút của các đoạn nối được ghi theo thứ tự tăng dần.

Ví dụ:

WIRES.INP

WIRES.OUT

9

2 5 3 8 7 4 6 9 1

5

2 3 4 6 9


1 Câu trả lời

0 phiếu
bởi thanhtrong ● Ban Quản Trị Thạc sĩ (6.2k điểm)
 
Hay nhất
{$A+,B-,D+,E+,F-,G-,I+,L+,N-,O-,P-,Q+,R+,S+,T-,V+,X+}

{$M 16384,0,655360}

uses crt;

const
   tfi='WIRES.INP';
   tfo='WIRES.OUT';
   NN=1000;
   maxN=1000;

var
   fi,fo: text;
   N: integer;
   a: array[1..maxN] of integer;
   sl: array[1..maxN] of integer;
   tr: array[1..maxN] of integer;
   slx: integer;
   x: array[1..maxN] of integer;

procedure Sinhdl;
var ch: char;
    i,j,t: integer;
begin
   clrscr;
   writeln('Ban co tao file ',tfi,' (C/K)?');
   repeat ch:=readkey until upcase(ch) in ['C','K'];
   if upcase(ch)='K' then exit;
   randomize;
   N:=NN;
   for i:=1 to N do a[i]:=i;
   for i:=N downto 2 do
      begin
         j:=random(i)+1;
         t:=a[i];
         a[i]:=a[j];
         a[j]:=t;
      end;
   assign(fi,tfi); rewrite(fi);
   writeln(fi,N);
   for i:=1 to N do write(fi,a[i],' ');
   close(fi);
end;

procedure Docdl;
var i,u: integer;
begin
   assign(fi,tfi); reset(fi);
   readln(fi,N);
   for i:=1 to N do
      begin
         read(fi,u);
         a[u]:=i;
      end;
   close(fi);
end;

procedure XDB;
var i,j: integer;
begin
   sl[1]:=1; tr[1]:=-1;
   for i:=2 to N do
      begin
         sl[i]:=1; tr[i]:=-1;
         for j:=i-1 downto 1 do
            if (a[j]sl[u] then u:=i;
   slx:=0;
   repeat
      inc(slx);
      x[slx]:=u;
      u:=tr[u];
   until u=-1;
end;

procedure Inkq;
var i: integer;
begin
   assign(fo,tfo); rewrite(fo);
   writeln(fo,slx);
   for i:=slx downto 1 do write(fo,x[i],' ');
   close(fo);
end;

BEGIN
   {Sinhdl;}
   Docdl;
   XDB;
   XLB;
   Inkq;
END.

Các câu hỏi liên quan

0 phiếu
1 trả lời 635 lượt xem
Có N người xếp hàng mua vé. Ta đánh số họ từ 1 đến N theo thứ tự đứng trong hàng. Thời gian phục vụ bán vé cho người thứ i là ti. ... qui ước ghi số 0) Ví dụ TICK.INP TICK.OUT 5 2 5 7 8 4 3 9 10 10 17 2 4
đã hỏi 2 tháng 2, 2021 trong Tin học lớp 9 bởi thanhtrong ● Ban Quản Trị Thạc sĩ (6.2k điểm)
0 phiếu
1 trả lời 133 lượt xem
Một người sử dụng INTERNET đặt yêu cầu nhận thông tin về một số chủ đề khác nhau từ một số địa chỉ truy nhập. Chủ của các ... ;t nhất cần thực hiện. Ví dụ: EMAIL.INP EMAIL.OUT 7 1 3 4 3 2 2 3 4
đã hỏi 4 tháng 2, 2021 trong Tin học lớp 9 bởi thanhtrong ● Ban Quản Trị Thạc sĩ (6.2k điểm)
0 phiếu
1 trả lời 708 lượt xem
Có N khối đá hình hộp chữ nhật. Người ta muốn xây một cái tháp bằng cách chồng các khối đá này lên nhau. Để đảm bảo an toàn, các khối ... 1 5 4 2 7 2 9 2 1 3 3 5 5 5 4 1 5 7 5 9 5 5 5 5 5 5 1 4 2 4 2
đã hỏi 4 tháng 2, 2021 trong Tin học lớp 9 bởi thanhtrong ● Ban Quản Trị Thạc sĩ (6.2k điểm)
0 phiếu
1 trả lời 329 lượt xem
Bưu cục Có một số làng nằm dọc theo một đường cao tốc. Đường cao tốc được biểu diễn bằng một trục số nguyên và vị trí mỗ ... một. Ví dụ: POST.INP POST.OUT 10 5 1 2 3 6 7 9 11 22 44 50 9 2 7 22 44 50
đã hỏi 13 tháng 7, 2021 trong Tin học lớp 9 bởi thanhtrong ● Ban Quản Trị Thạc sĩ (6.2k điểm)
+1 thích
3 câu trả lời 564 lượt xem
đã hỏi 5 tháng 10, 2019 trong Toán lớp 7 bởi hungpham7658 Cử nhân (2.0k điểm)
+3 phiếu
1 trả lời 190 lượt xem
Chào mọi người, đã một khoảng thời gian mình không đăng bài vì một số lý do cá nhân giờ mình sẽ tiếp tục với chuyên mục Mảng để mọi người ôn tập và nâng cao kiến thức về tin nhé!!!! Cảm ơn các bạn! Bài 1: Tính giá trị trung bình của tổng N số nguyên được nhập từ bàn phím!
đã hỏi 28 tháng 2, 2019 trong Tin học lớp 8 bởi supersmart2005 Cử nhân (2.6k điểm)
+2 phiếu
1 trả lời 322 lượt xem
Bài 5: Viết chương trình nhập từ bàn phím các phần tử của mảng hai chiều. Kích thước của mảng được nhập trước cũng từ bàn phím.
đã hỏi 28 tháng 2, 2019 trong Tin học lớp 8 bởi supersmart2005 Cử nhân (2.6k điểm)
+1 thích
0 câu trả lời 127 lượt xem
Bài 4: ( Hơi khó lên) Lập phương trình nhập bậc hệ số, giá trị của biến và tình giá trị của đa thức: P(x) = anxn + an-1xn-1 + ... + a1x1 + a0
đã hỏi 28 tháng 2, 2019 trong Tin học lớp 8 bởi supersmart2005 Cử nhân (2.6k điểm)
0 phiếu
1 trả lời 167 lượt xem
Bài 3: Tìm tất cả các số có ba chữ số sao cho tổng các lập phương của các chữ số bằng chính số đó.
đã hỏi 28 tháng 2, 2019 trong Tin học lớp 8 bởi supersmart2005 Cử nhân (2.6k điểm)
  1. Darling_274

    20 Điểm

  2. minhquanhhqt160

    15 Điểm

  3. lueyuri009730

    15 Điểm

  4. lenguyenducminh05102011227

    5 Điểm

Phần thưởng hằng tháng
Hạng 1: 200.000 đồng
Hạng 2: 100.000 đồng
Hạng 3: 50.000 đồng
Hạng 4: 20.000 đồng
Phần thưởng bao gồm: mã giảm giá Shopee, Nhà Sách Phương Nam, thẻ cào cùng nhiều phần quà hấp dẫn khác sẽ dành cho những bạn tích cực nhất của tháng. Xem tại đây
Bảng xếp hạng cập nhật 30 phút một lần
...