Trang chủ Tin Học Lớp 11 Bài: Thám hiểm (tên file: BAI1.PAS) Một nhà thám hiểm...

Bài: Thám hiểm (tên file: BAI1.PAS) Một nhà thám hiểm leo núi mang theo một máy tính có thể liên lạc truyền tin qua hệ thống vệ tinh với một máy tính

Câu hỏi :

Bài: Thám hiểm (tên file: BAI1.PAS) Một nhà thám hiểm leo núi mang theo một máy tính có thể liên lạc truyền tin qua hệ thống vệ tinh với một máy tính khác đặt ở trạm dưới chân núi, nơi ông khởi hành. Chẳng may, ông gặp tai nạn động đất và bị thương, phải trú tạm tại một trạm dừng chân trên núi. Máy tính ông mang theo cũng bị hỏng sau tai nạn, nó không thể nhận tin đến. Nhà thám hiểm đã cố gắng truyền đi chuỗi tin S thông báo địa điểm của mình về trạm, mỗi lần liên lạc đều truyền cùng một thông điệp và lặp lại thông điệp đó nhiều lần, mỗi lần cách nhau một khoảng thời gian. Nhưng ông không biết rằng thông tin truyền đi luôn bị mất đi đúng m kí tự liên tiếp nhau trong mỗi lần chuyển tin, vị trí bị mất tin là ngẫu nhiên trong chuỗi tin. Thông điệp tại máy tính nhận bị đứt làm hai chuỗi tin s1, s2. Nguồn pin của máy tính là có hạn, sau n lần gửi tin, ông đã mất liên lạc, do pin cạn kiệt. Vấn đề ở trạm là phải phục hồi lại thông điệp đó, căn cứ vào các cặp chuỗi tin nhận được sau n lần nhận tin. -Yêu cầu: Với n, m do đội cứu hộ cung cấp, Em hãy viết một chương trình giúp đội cứu hộ phục hồi lại thông điệp nhận được. -Dữ liệu vào: cho trong file văn bản TH_HIEM.INP, hàng đầu tiên là số n, m (2

Lời giải 1 :

uses crt;
type int = longint;
const task = 'TH_HIEM';
var n, m, i, j, p: int;
    l1, l2: int;
    s, s1, s2: ansistring;
    check: boolean = true;
begin
//    assign(input, task + '.INP'); reset(input);
//    assign(output, task + '.OUT'); rewrite(output);
    
    readln(n, m);
    for i:=1 to 500 do s:=s + '^';
    for i:=1 to n do begin
        readln(s1); readln(s2);
        l1:=length(s1); l2:=length(s2);
        
        for j:=1 to l1 do 
            if s[j] = '^' then s[j]:=s1[j] else check:=check and (s[j] = s1[j]);
        
        for j:=1 to l2 do begin
            p:=l1 + m + j;
            if s[p] = '^' then s[p]:=s2[j] else check:=check and (s[p] = s2[j]);
        end;
    end;
    
   for i:=2 to 500 do 
        if (s[i - 1] = '^') and (s[i] <> '^') then check:=false;
    
    if check then begin
        i:=1; while s[i] <> '^' do begin write(s[i]); inc(i); end;
    end else writeln('KHONG-THE');
    
//    close(input); close(output);
end.

Thảo luận

Bạn có biết?

Tin học, tiếng Anh: informatics, tiếng Pháp: informatique, là một ngành khoa học chuyên nghiên cứu quá trình tự động hóa việc tổ chức, lưu trữ, xử lý và truyền dẫn thông tin của một hệ thống máy tính cụ thể hoặc trừu tượng (ảo). Với cách hiểu hiện nay, tin học bao hàm tất cả các nghiên cứu và kỹ thuật có liên quan đến việc mô phỏng, biến đổi và tái tạo thông tin.

Nguồn : Wikipedia - Bách khoa toàn thư

Tâm sự 11

Lớp 11 - Năm thứ hai ở cấp trung học phổ thông, gần đến năm cuối cấp nên học tập là nhiệm vụ quan trọng nhất. Nghe nhiều đến định hướng sau này rồi học đại học. Ôi nhiều lúc thật là sợ, hoang mang nhưng các em hãy tự tin và tìm dần điều mà mình muốn là trong tương lai nhé!

Nguồn : ADMIN :))

Liên hệ hợp tác hoặc quảng cáo: gmail

Điều khoản dịch vụ

Copyright © 2021 HOCTAPSGK