1 条题解

  • 0
    @ 2022-10-29 22:47:06

    全排列函数超时, dfs中的 char t 判重没想到

    #include<bits/stdc++.h>
    using namespace std;
    
    int len;
    bool vis[10001];
    char str[10001];
    char ans[10001];
    
    void dfs(int start) {
        char t = '\0';
        if(start == len) {
            for(int i = 0; i < len; i++) {
                printf("%c", ans[i]);
            }
            printf("\n");
            return ;
        }
        for(int i = 0; i < len; i++) {
            if(!vis[i] && t != str[i]) {
                vis[i] = true;
                ans[start] = str[i];
                t = str[i];
                dfs(start + 1);
                vis[i] = false;
            }
        }
    }
    
    int main() {
        while(cin >> str) {
            len = strlen(str);
            memset(vis, false, sizeof(vis));
            sort(str, str + len);
            dfs(0);
        }
        system("pause");
        return 0;
    }
    
    • 1

    信息

    ID
    15
    时间
    1000ms
    内存
    256MiB
    难度
    6
    标签
    递交数
    25
    已通过
    10
    上传者