30分,求助!
查看原帖
30分,求助!
786127
chrispang楼主2024/7/27 11:46

为啥子错了啊?

#include <bits/stdc++.h>
using namespace std;

int n, now = 1, tot = 1, ans[150];
bool is_input[150], c[150][150], vis[150][150];
void dfs(int x) {
    if(now == n + 1) {
        for (int i = 1; i <= tot; i++)
            cout << (char)ans[i];
        exit(0);
    }
    for (int i = 'A'; i <= 'z'; i++)
        if(c[x][i] && !vis[x][i]) {
            now++, tot++;
            ans[tot] = i;
            vis[x][i] = vis[i][x] = 1;
            dfs(i);
            vis[x][i] = vis[i][x] = 0;
            ans[tot] = 0;
            now--, tot--;
        }
}

int main() {
    cin >> n;
    string s;
    for (int i = 1; i <= n; i++) {
        cin >> s;
        int a = s[0], b = s[1];
        is_input[a] = is_input[b] = true;
        c[a][b] = c[b][a] = true;
    }
    for (int i = (int)'A'; i <= (int)'z'; i++)
        if(is_input[i]) {
            ans[1] = i;
            dfs(i);
            break;
        }
    cout << "No Solution" << endl;
    return 0;
}
2024/7/27 11:46
加载中...