竞赛讨论区 > E 题std做法
头像
yeVegeTable
发布于 03-10 23:14
+ 关注

E 题std做法

出题人已经忘记思路是什么了,但总之很简单,直接见代码吧

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) 回帖
加载中...
话题 回帖

等你来战

查看全部

热门推荐