出题人已经忘记思路是什么了,但总之很简单,直接见代码吧
void solve() {
int n, m;
cin >> n >> m;
vector<vector<char>> g(n + 1, vector<char>(m + 1));
for(int i = 1; i <= n; i++) {
int c = 0;
for(int j = 1; j <= m; j++) {
g[i][j] = 'a' + c;
c = (c + 1) % 26;
}
}
for(int i = 1; i <= n; i++) {
if(i == 2) continue;
int idx = (i == 1 ? m - 1 : 1);
char c = 'a';
set<char> st;
for(int k = 0; k < 4; k++) {
int a = i + dx[k], b = idx + dy[k];
if(a < 1 || a > n || b < 1 || b > m) continue;
st.emplace(g[a][b]);
}
while(st.count(c)) {
c ++ ;
}
g[i][idx] = c;
}
for(int i = 1; i <= n; i++) {
for(int j = 1; j <= m; j++) {
cout << g[i][j];
}
cout << endl;
}
}
全部评论
(0) 回帖