GUNDAM - Đừng động vào Gundam của anh Hiếu

Xem dạng PDF

Gửi bài giải


Điểm: 1,00 (OI)
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 256M

Tác giả:
Dạng bài
Ngôn ngữ cho phép
C, C#, C++, Go, Java, Pascal, Perl, PHP, PyPy, Python, Ruby, Rust, Scratch, Swift

Nhà anh Hiếu rộng ~M * N~ được biểu diễn theo sơ đồ chỉ gồm các ký tự"."biểu diễn cho khoảng trống không có đồ trong nhà anh Hiếu và"#"biểu diễn các vị trí bộ Gundam của anh Hiếu trong nhà. Một ngày nọ, Thắng đến nhà anh Hiếu chơi, anh Hiếu không muốn cho Thắng phá phách bộ Gundam của mình nên chỉ cho Thắng chơi trên giường và nhìn ngắm những bộ Gundam đó. Giường của anh Hiếu có chiều rộng là ~1~ và chiều dài là ~2~.Hãy viết chương trình tính giúp a Hiếu xem có bao nhiêu cách để kê chiếc giường vào những khoảng trống trong phòng của anh ấy.

Input

  • Dòng thứ nhất gồm 2 số nguyên dương ~N~ và ~M~.
  • ~N~ dòng tiếp theo, mỗi dòng gồm 1 chuỗi có ~M~ chữ cái, ~N~ chuỗi này là sơ đồ khoảng trống và Gundam trong nhà anh Hiếu.

Biết rằng

  • ~2 \leq N, M \leq 100~
  • Mỗi chữ cái trong chuỗi chỉ gồm 2 ký tự"."và"#"

Output

  • 1 dòng gồm 1 số nguyên dương là số cách kê giường vào những khoảng trống trong nhà anh Hiếu.

Sample

Input #1
2 3
..#
#..
Output #1
3

Bình luận

Please read the guidelines before commenting.



  • 1
    mducc  đã bình luận lúc 3, Tháng 6, 2026, 3:01

    hint

    • Giường kích thước 1x2 → đặt ngang hoặc dọc.
    • Duyệt từng ô trống .:
    • Nếu ô bên phải (cùng hàng) cũng là . → đặt ngang.
    • Nếu ô bên dưới (cùng cột) cũng là . → đặt dọc.
    • Đếm tổng số cách (mỗi cách là 1 vị trí của giường).

    code tham khảo (c++):

    #include <bits/stdc++.h>
    using namespace std;
    int main() {
        ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
        int n, m;
        cin >> n >> m;
        char a[105][105];
        for (int i = 1; i <= n; i++) {
            for (int j = 1; j <= m; j++) {
                cin >> a[i][j];
            }
        }
        int ans = 0;
        for (int i = 1; i <= n; i++) {
            for (int j = 1; j <= m; j++) {
                if (a[i][j] == '.') {
                    if (j < m && a[i][j + 1] == '.') ans++;
                    if (i < n && a[i + 1][j] == '.') ans++;
                }
            }
        }
        cout << ans << "\n";
        return 0;
    }
    

  • 0
    congtyluuthaibao1978  đã bình luận lúc 26, Tháng 11, 2025, 5:12

    include <bits/stdc++.h>

    using namespace std;

    int main(){ ios::syncwithstdio(false); cin.tie(nullptr);

    int N, M;
    cin >> N >> M;
    vector<string> a(N);
    for(int i = 0; i < N; i++){
        cin >> a[i];
    }
    
    long long ways = 0;
    
    // đặt giường theo hàng ngang: kiểm tra ô (i, j) và (i, j+1)
    for(int i = 0; i < N; i++){
        for(int j = 0; j + 1 < M; j++){
            if(a[i][j] == '.' && a[i][j+1] == '.') {
                ways++;
            }
        }
    }
    
    // đặt giường theo cột dọc: kiểm tra ô (i, j) và (i+1, j)
    for(int i = 0; i + 1 < N; i++){
        for(int j = 0; j < M; j++){
            if(a[i][j] == '.' && a[i+1][j] == '.') {
                ways++;
            }
        }
    }
    
    cout << ways;
    return 0;
    

    }


  • 0
    hovanducanh66  đã bình luận lúc 11, Tháng 11, 2025, 14:09

    sao bài dễ mà khó ạ (khó trong dễ không ạ ) :))


  • -1
    0988440189  đã bình luận lúc 21, Tháng 6, 2025, 10:42

    Ý tưởng là các bạn xét 2 trường hợp riêng là nếu giường được đặt dọc và đươch đặt ngang Ngang :

    • for(int i=0;i<dòng;i++){ for(int j=0;j< cột;j++){ if(a[i][j]=='.'&&a[i][j+1]=='.'){ sum++; } } } Dọc : for(int i=0;i<cột;i++){ for(int j=0;j<dòng-1;j++){ if(a[j][i]=='.'&&a[j+1][i]=='.'){ sum++; } } }

  • 3
    chinhle  đã bình luận lúc 6, Tháng 2, 2024, 2:37 chỉnh sửa

    gợi ý: tạo 1 mảng f có độ lớn là (n+1)x(m+1) cho phần tử cuối mỗi hàng và mỗi cột là "#" dùng 2 vòng for i j chạy từ 0 -> n và từ 0 -> m rồi kiếm tra f[i][j] có != "#" không nếu có thì xét f[i+1][j] nếu f[i+1][j] mà != "#" thì biến đếm tăng thêm 1 tương tự như vậy đối vs trường hợp f[i][j+1] cuối cùng thì in ra s là ac


  • 4
    chinhle  đã bình luận lúc 6, Tháng 2, 2024, 2:00

    cung kho <(")