Untitled

mail@pastecode.io avatar
unknown
plain_text
a month ago
2.0 kB
2
Indexable
Never
#include <iostream>
#include <unordered_map>
#include <map>
#include <cstring>
#include <algorithm>
#include <string>
#define MAX_SIZE 1000

using namespace std;
int n;
int step;
unordered_map<string, string> mp;
int visit[MAX_SIZE][MAX_SIZE];
int mat[MAX_SIZE][MAX_SIZE];

void init(int N, int mPlane[MAX_SIZE][MAX_SIZE])
{
    // Reset
    mp.clear();
    n = N;
    step = 0;
    for(int i = 0; i < n; i++) {
        for(int j = 0; j < n; j++) {
            mat[i][j] = mPlane[i][j];
        }
    }
    memset(visit, 0, sizeof(visit));

    // Hash map
    for(int i = 0; i < n - 4; i += 5) {  // Sửa n-3 thành n-4 để tránh truy cập ngoài mảng
        for(int j = 0; j < n - 4; j += 5) {
            int cnt = 0;
            bool check = false;
            string s = "";
            for(int r = i; r < i + 5; r++) {
                for(int c = j; c < j + 5; c++) {
                    if(mat[r][c] == 1) {  // Kiểm tra toàn bộ ô trong vùng 5x5
                        cnt++;
                        if(mat[i][c] == 1 || mat[i+4][c] == 1 || mat[r][j] == 1 || mat[r][j+4] == 1) {
                            check = true;
                        }
                    }
                }
            }
            // Kiểm tra điều kiện và thêm vào hash map
            if(check && cnt == 7) {
                for(int r = i; r < i + 5; r++) {
                    for(int c = j; c < j + 5; c++) {
                        visit[r][c] = step;
                        s += to_string(mat[r][c]);  // Ghi giá trị toàn bộ vùng 5x5 vào chuỗi
                    }
                }
                mp[s] = to_string(step);  // Lưu chuỗi kết hợp với bước hiện tại
                step++;
            }
        }
    }
    
    // In ra kết quả của hash map
    for(auto it : mp) {
        cout << it.first << " " << it.second << endl;
    }
}

int getCount(int mPiece[5][5])
{
    return 0;
}

int getPosition(int mRow, int mCol)
{
    return 0;
}
Leave a Comment