Untitled
Anonymous
c_cpp
05/01/2026 9:19 AM
2.4 KB
22
Indexable
#include <iostream>
#include <vector>
using namespace std;
int dx[4] = {-1, 1, 0, 0};
int dy[4] = {0, 0, -1, 1};
void check(const vector<vector<int>>& mine_place, const vector<vector<int>>& board) {
for (int i = 0; i < mine_place.size(); i++) {
for (int j = 0; j < mine_place[0].size(); j++) {
int count = 0;
for (int k = 0; k < 4; k++) {
int x = i + dx[k];
int y = j + dy[k];
if (x >= 0 && x < mine_place.size() && y >= 0 && y < mine_place[0].size()) {
count += mine_place[x][y];
}
}
if (count != board[i][j]) {
return;
}
}
}
for (int i = 0; i < mine_place.size(); i++) {
for (int j = 0; j < mine_place[0].size(); j++) {
cout << mine_place[i][j] << " ";
}
cout << endl;
}
exit(0);
}
void BackTracking(const vector<vector<int>>& board, vector<vector<int>>& mine_place, int i, int j) {
for (int x = 0; x <= 1; x++){
mine_place[i][j] = x;
if (i == mine_place.size() - 1 && j == mine_place[0].size() - 1) {
check(mine_place, board);
}
else if (j == mine_place[0].size() - 1) {
BackTracking(board, mine_place, i + 1, 0);
}
else {
BackTracking(board, mine_place, i, j + 1);
}
}
}
int main(){
int n, m;
cin >> n >> m;
vector<vector<int>> board;
vector<vector<int>> mine_place;
board.resize(n, vector<int>(m));
mine_place.resize(n, vector<int>(m));
for(int i = 0; i < n; i++){
for(int j = 0; j < m; j++){
cin >> board[i][j];
}
}
BackTracking(board, mine_place, 0, 0);
}Editor is loading...
Leave a Comment