PTITSU1D - Bài D - PTIT Summer 1

Người Gửi: Dương Lee

  • Problem:

Giờ thì mùa xuân đó đã đến và mặt trời đang tỏa sáng, mọi người đang bắt hạ thấp bức rèm của họ. Stefica là một phụ nữ sắp già, người thích theo dõi những việc mà những người hàng xóm khác đang làm và sau đó nói về nó sau lưng họ. Năm nay, cô ta đặc biệt quan tâm đến những người đang hạ rèm trong toàn nhà dọc đường, và độ thấp mà họ hạ chúng xuống.  
Chúng ta sẽ biểu diễn mỗi cửa sổ với ô 4x4, với những dấu sao biểu diễn những bức rèm được hạ thấp xuống. Stefica có thể nhìn thấy cửa sổ bởi 1 trong 5 trạng thái sau:

Tòa nhà dọc đường có N cửa sổ ở mỗi M tầng. Với trạng thái hiện tại của tòa nhà được cho trước, tìm số lượng cửa trong mỗi 5 trạng thái ở trên.
Input

Dòng đầu tiên chứa số bộ test T. Sau đó là T bộ test, mỗi bộ test có dạng:  
-          Dòng đầu tiên của input chứa 2 số nguyên được cách nhau bởi dấu cách ( 1 <= M, N <=100).  
-          Những dòng sau miêu tả trạng thái tòa nhà hiện tại. Mỗi cửa sổ được biểu diễn bởi 1 trong ô 4x4 như trên, và những cửa sổ được phân cách bởi ký tự “#”. Xem ví dụ input để hiểu rõ. Xây dựng miêu tả sẽ có chính xác 5M + 1 dòng, mỗi dòng có 5N + 1 ký tự.
Output
Mỗi bộ test in ra trên một dòng gồm 5 số nguyên cách nhau bởi dấu cách, số lượng của sổ cho mỗi loại theo thứ tự được thể hiệu như trên. Tổng của những số này là M*N
Example:
Input
2
1 2
###########
#....#****#
#....#****#
#....#....#
#....#....#
###########
2 3
################
#****#****#****#
#****#****#****#
#****#....#****#
#....#....#****#
################
#....#****#****#
#....#****#....#
#....#....#....#
#....#....#....#
################
Output:
1 0 1 0 0
1 1 2 1 1

  • Solution:

Bài này chỉ có các trường hợp của sổ như trên. Vậy thay vì duyệt toàn bộ kí tự thì chỉ cần duyệt các kí tự đại diện của nó: - Tạo mảng đánh dấu. - Nhảy tưng hàng: mỗi hàng cách nhau 5 kí tự. - Nhảy từng cột: mỗi cột cách nhau 5 kí tự - Với mỗi hàng và cột xét đến thì cho đếm tt[0]++ (là trạng thái không có *); - Duyệt k= từ hàng đó đến liên tiếp 4 hàng sau nó. Nếu hàng xét đến có '*' thì tt[k+1]++; và tt[k]--;
Xem hình để hiểu rõ hơn:

  • Code:

C++:



JAVA:


Share this

Related Posts

Previous
Next Post »