首页 > 其他分享 >递归求字符全排列

递归求字符全排列

时间:2023-01-18 12:22:05浏览次数:37  
标签:字符 排列 递归 truea truepath used 使用 path 已经

#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;

const int N=10;
char n[N];
char path[N];
bool used[N];

void dfs(int u)
{
    if(u==strlen(n))
    {
        for(int i=0;i<strlen(n);i++)    cout<<path[i];
        cout<<endl;
        return;
    }
    for(int i=0;i<strlen(n);i++)
    {
        if(!used[i])
        {
            path[u]=n[i];
            cout<<"path["<<u<<"]"<<"=n["<<i<<"]"<<endl;
            used[i]=true;
            cout<<"used["<<i<<"]=true"<<endl;
            dfs(u+1);
            used[i]=false;
            cout<<"used["<<i<<"]=false"<<endl;
        }
        else
        {
            cout<<n[i]<<"已经使用了"<<endl;
        }
    }
}

int main()
{
    cin>>n;
    sort(n,n+strlen(n));
    dfs(0);
    return 0;
}

输入abc

输出结果

path[0]=n[0]
used[0]=true
a已经使用了
path[1]=n[1]
used[1]=true
a已经使用了
b已经使用了
path[2]=n[2]
used[2]=true
abc
used[2]=false
used[1]=false
path[1]=n[2]
used[2]=true
a已经使用了
path[2]=n[1]
used[1]=true
acb
used[1]=false
c已经使用了
used[2]=false
used[0]=false
path[0]=n[1]
used[1]=true
path[1]=n[0]
used[0]=true
a已经使用了
b已经使用了
path[2]=n[2]
used[2]=true
bac
used[2]=false
used[0]=false
b已经使用了
path[1]=n[2]
used[2]=true
path[2]=n[0]
used[0]=true
bca
used[0]=false
b已经使用了
c已经使用了
used[2]=false
used[1]=false
path[0]=n[2]
used[2]=true
path[1]=n[0]
used[0]=true
a已经使用了
path[2]=n[1]
used[1]=true
cab
used[1]=false
c已经使用了
used[0]=false
path[1]=n[1]
used[1]=true
path[2]=n[0]
used[0]=true
cba
used[0]=false
b已经使用了
c已经使用了
used[1]=false
c已经使用了
used[2]=false

标签:字符,排列,递归,truea,truepath,used,使用,path,已经
From: https://www.cnblogs.com/weinan030416/p/17059547.html

相关文章

  • 使用sed 命令查找和替换文件中的字符串的方法总结
    sed命令是什么sed命令表示StreamEditor(流编辑器),用来在Linux上执行基本的文本操作。它可以执行各种功能,如搜索、查找、修改、插入或删除文件。此外,它也可以执行复杂......
  • R 字符串操作大全
    paste函数和paste0()函数连接字符>paste("a",1:3)#默认空格符连接,即sep=""[1]"a1""a2""a3">paste("a",1:3,sep="")#a自动与每个元素连接[1]"a1""......
  • 字符编码
    python解释器与文件本编辑的异同如下#1、相同点:前两个阶段二者完全一致,都是将硬盘中文件的内容读入内存,详解如下python解释器是解释执行文件内容的,因而python解释器具备......
  • 字符串左旋
    第一种 暴力穷举法#include<stdio.h>#include<string.h>voidleft_move(char*arr,intk){inti=0;intlen=strlen(arr);for(i=0;i<k;i++){intj=0;char......
  • mysql查看、修改数据库字符集
    showVARIABLESlike'character%';character_set_client:客户端请求数据的字符集character_set_connection:客户机/服务器连接的字符集character_set_database:默认数据库的......
  • java:递归算法
    递归算法:就是调用自己的本身。publicclasstest{publicstaticvoidmain(Stringarg[]){Strings="abcde";chara[]=s.toCharArray();testt=newtest()......
  • [oeasy]python0052_ raw格式字符串_单引号_双引号_反引号_ 退格键
    转义字符回忆上次内容最近玩的是\n、\r之外的转义序列\a是␇(bell)\t是水平制表符\v是换行不回车通过16进制数值转义\xhh把(hh)16进制对应的asci......
  • C标准库 | 字符串转整数/浮点数函数汇总
    在日常LinuxC语言开发中,不可避免会用到字符串转整数或者浮点数的操作,例如带参数的​​main​​​函数中,在​​shell​​下对着某个命令输入一组数字参数,这组数字实际上是字......
  • 洛谷 P1098 [NOIP2007 提高组] 字符串的展开
    洛谷链接牛客链接两个平台都过了题目:题解:本题是一道比较硬核的模拟题,思路方面其实问题不大,但是难在模拟情况上面而且测试数据里还包含了一些题目中没有提到的情况,所......
  • python3.10.0字符串基础
    字符串支持索引(下标访问),第一个字符的索引是0。单字符没有专用的类型,就是长度为一的字符串:>>>word='Python'>>>word[0]#characterinposition0'P'>>>word[......