Altered Structure

This commit is contained in:
e2hang
2025-08-31 10:21:06 +08:00
parent daeec35f97
commit e162486df1
6 changed files with 53 additions and 0 deletions

View File

@@ -0,0 +1,32 @@
#include <iostream>
using namespace std;
//ab<61><62><EFBFBD>յ<EFBFBD>
int dx[8] = {-2, -1, 1, 2, 2, 1, -1, -2};
int dy[8] = {1, 2, 2, 1, -1, -2, -2, -1};
int step[9][9];
void dfs(int _a, int _b, int _n, int _m){
if(_n > 8 || _n < 1 || _m < 1 || _m > 8) return;
if(_n == _a && _m == _b) return;
for(int i = 0; i < 8; i++){
int nx = _n + dx[i];
int ny = _m + dy[i];
if (nx >= 1 && nx <= 8 && ny >= 1 && ny <= 8) {
int stepnew = step[_n][_m] + 1;
if (step[nx][ny] == 0 || stepnew < step[nx][ny]) {
step[nx][ny] = stepnew;
dfs(_a, _b, nx, ny);
}
}
}
}
int main(){
int a, b, n, m;
cin >> n >> m >> a >> b;
step[n][m] = 0;
dfs(a, b, n, m);
cout << step[a][b] << endl;
return 0;
}

View File

@@ -0,0 +1,51 @@
#include <iostream>
#include <vector>
using namespace std;
int m = 5, n = 5;
vector<vector<char>> s;
vector<vector<bool>> visited;
vector<vector<int>> ids;
void dfs(int x, int y, int id){
if(x < 0 || x >= m || y < 0 || y >=n) return;
if(s[x][y] != '@') return;
if(visited[x][y] == true) return;
visited[x][y] = true;
ids[x][y] = id;
dfs(x - 1, y - 1, id + 1);
dfs(x - 1, y, id + 1);
dfs(x - 1, y + 1, id + 1);
dfs(x, y - 1, id + 1);
dfs(x, y + 1, id + 1);
dfs(x + 1, y - 1, id + 1);
dfs(x + 1, y, id + 1);
dfs(x + 1, y + 1, id + 1);
cout << id << " ";
}
int main(){
s.resize(m);
visited.assign(m, vector<bool>(n, false));
ids.assign(m, vector<int>(n, 0));
char tmp;
for(int i = 0; i < m; i++){
for(int j = 0; j < n; j++){
cin >> tmp;
s[i].push_back(tmp);
}
}
for(int i = 0; i < m; i++){
for(int j = 0; j < n; j++){
if(!visited[i][j] && s[i][j] == '@') dfs(i, j, 1);
}
}
cout << endl;
int max = -1;
for(int i = 0; i < m; i++){
for(int j = 0; j < n; j++){
if(ids[i][j] > max) max = ids[i][j];
}
}
cout << max << endl;
}