题解 | #全排列#

全排列

https://www.nowcoder.com/practice/5632c23d0d654aecbc9315d1720421c1

#include <cstdio>
#include <string>
#include <algorithm>
using namespace std;

int jie_cheng(int n){
    if(1==n){
        return 1;
    }
    return n* jie_cheng(n-1);
}

bool comp(string lhs,string rhs){
    int i=0;
    while(true){
        if(lhs[i]<rhs[i]){
            return true;
        }else if(lhs[i]==rhs[i]){
            i++;
        }else{
            return false;
        }
    }
}

char arr[800][10];
void arrange(string str){
    if(1==str.size()){
        arr[0][0]=str[0];
        return;
    }
    char character=str[0];
    str.erase(str.begin());
    arrange(str);
    int size=str.size();
    int col= jie_cheng(size);
    int cur=0;//新数组的当前行数
    //暂存原数组
    char arr_before[800][10];
    for(int k=0;k<col;k++){
        for(int kdx=0;kdx<size;kdx++){
            arr_before[k][kdx]=arr[k][kdx];
        }
    }
    for(int i=0;i<col;i++){
        char before[10];
        //暂存原数组的每一行
        for(int idx=0;idx<size;idx++) {
            before[idx] = arr_before[i][idx];
        }
        //插入
        for(int pos=0;pos<=size;pos++){//pos代表要插入的位置
            char before_insert[10];
            for(int mdx=0;mdx<size;mdx++){
                before_insert[mdx]=before[mdx];
            }
            for(int j=size-1;j>=pos;j--){
                before_insert[j+1]=before[j];
            }
            before_insert[pos]=character;
            for(int m=0;m<size+1;m++){
                arr[cur][m]=before_insert[m];
            }
            cur++;
        }
    }
}

int main() {
    char arr_model[10];
    scanf("%s",arr_model);
    string str=arr_model;
    arrange(str);
    string pstr[800];
    int num= jie_cheng(str.size());
    for(int i=0;i<num;i++){
        pstr[i]=arr[i];
    }
    sort(pstr,pstr+num,comp);
    for(int j=0;j<num;j++){
        printf("%s\n",pstr[j].c_str());
    };
}

全排列的笨办法,弄了俩小时Orz求各位大佬不要嘲笑我555C++的STL库都没怎么学

全部评论

相关推荐

哇哇的菜鸡oc:他这不叫校招offer,而是实习offer
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务