zoukankan      html  css  js  c++  java
  • 51Nod-1384 全排列 (DFS)

    基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题
     收藏
     关注
    给出一个字符串S(可能有重复的字符),按照字典序从小到大,输出S包括的字符组成的所有排列。例如:S = "1312",
    输出为:
     
    1123
    1132
    1213
    1231
    1312
    1321
    2113
    2131
    2311
    3112
    3121
    3211
    Input
    输入一个字符串S(S的长度 <= 9,且只包括0 - 9的阿拉伯数字)
    Output
    输出S所包含的字符组成的所有排列
    Input示例
    1312
    Output示例
    1123
    1132
    1213
    1231
    1312
    1321
    2113
    2131
    2311
    3112
    3121
    3211
    题意:= =、全排列。
    个人理解:先用flag[10]数组把0-9的数的个数存储一下。然后用DFS选择每个位子选什么数,记得需要回溯。
    更多的解释都在下面代码中。非常好理解
     1 #include<stdio.h>
     2 #include<string.h>
     3 #include<algorithm>
     4 using namespace std;
     5 int flag[10];
     6 int number1[15]; 
     7 void DFS(int number,int S)//(数组中有几个数,总共有几个数) 
     8 {
     9     for (int i=0;i<10;i++)
    10     {
    11         if(flag[i]>0)//表示有这个数
    12         {
    13             flag[i]--;//消耗这个数 
    14             number1[number]=i;//把这个数放入数组
    15             number++;//数组中有几个数
    16             if(number==S)//数组中的数满了,表明已经选择完毕,则直接把数组中的数输出 
    17             {
    18                 for (int q=0;q<number;q++)
    19                 {
    20                     if(q!=number-1)
    21                     printf("%d",number1[q]);
    22                     else
    23                     printf("%d
    ",number1[q]);
    24                 }
    25              }
    26             DFS(number,S);
    27             number--;//回溯 
    28             flag[i]++;//回溯 
    29         }
    30     }
    31 }
    32 int main()
    33 {
    34     char s[10];
    35     scanf("%s",s);
    36     memset(flag,0,sizeof(flag));
    37     int len=strlen(s);
    38     for (int i=0;i<len;i++)
    39     flag[s[i]-'0']++;//存储0-9每个数的个数 
    40     DFS(0,len);
    41     return 0;
    42 }
    
    
    



  • 相关阅读:
    olcano调度器源代码走读actions篇
    dlv volcano scheduler
    informer
    DeltaFIFO reflector
    第五章 Redis集群
    第四章 Redis主从
    第三章 ACL安全策略
    第二章 Redis数据类型
    第一章 Redis基本原理
    第九章 Confluence集成Jira
  • 原文地址:https://www.cnblogs.com/bendandedaima/p/9304850.html
Copyright © 2011-2022 走看看