Thứ Tư, 7 tháng 8, 2019

Bài 41 - Giải thuật nhập môn

Trong 1 khu dân cư có n*n lô đất cạnh nhau ( 1<=n<=100), giả sử lô đất (i,j) ( với 1<=i,j<=100) được quy hoạch xây dựng toà nhà cao ai,j tầng (1<=ai,j<=100). Giả sử lượng sơn cần dùng là tương ứng tỉ lệ với đơn vị diện tích bề mặt (1 bề mặt của mỗi tầng ở mỗi toà nhà chiếm 1 đơn vị diện tích) và ta sơn cả phần nóc của các toà nhà này. Hãy tính lượng sơn cần phải sơn toàn bộ khu nhà sau khi xây xong ( các bức tường bị khuất thì không cần sơn)
Ví dụ: Khu dân cư với 3*3 lô đất được quy hoạch xây dựng các toà nhà cao tầng như sau:
2 3 2
2 3 2
2 3 2
Kết quả: Lượng sơn cần dùng là 41. Trong bảng dưới đây minh hoạ lượng sơn tương ứng cho mỗi toà nhà của khu nhà trên:
5 6 5
3 3 3
5 6 5
Dữ liệu vào: Lưu trong tập tin sonnha.inp:
- Dòng đầu tiên chứa số nguyên n
- N dòng tiếp theo chứa ma trận n*n trong đó ai,j là độ cao của toà nhà được xây trên lô đất thứ (i,j)
Dữ liệu xuất:
Xuất ra tập tin sonnha.out chứa 1 số duy nhất là số lượng sơn cần dùng để sơn toàn bộ toà nhà trong khu dân cư.




1 nhận xét:

  1. Uses crt;
    Var n,i,j,total:longint;
    f:array [0..101,0..101] of longint;
    function test(a,b:longint):longint;
    Begin
    If a>b then exit(a-b) else exit(0);
    end;
    Begin
    readln(n);
    fillchar(f,sizeof(f),0);
    For i:=1 to n do
    For j:=1 to n do
    readln(f[i,j]);
    total:=total+sqr(n);
    For i:=1 to n do
    For j:=1 to n do
    total:=total+test(f[i,j],f[i-1,j])+test(f[i,j],f[i,j-1])+test(f[i,j],f[i+1,j])+test(f[i,j],f[i,j+1]);
    Write(total);
    readln;
    end.

    Trả lờiXóa

Dùng nick gmail để bình luận. Nếu lần đầu tiên bạn làm điều này thì hệ thống sẽ chuyển bạn sang trang blogger và hỏi bạn chọn tên hiển thị là gì. Bạn hãy nhập tên hiển thị rồi ok là được. Những lần bình luận sau hệ thống sẽ không hỏi nữa. Cảm ơn!

Bài được xem nhiều nhất