zoukankan      html  css  js  c++  java
  • [51nod1384]全排列

    法一:next_permutation函数,两个参数分别为起始指针和末尾指针。

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 typedef long long ll;
     4 char arr[19];
     5 int main(){
     6     scanf("%s",arr);
     7     int len=strlen(arr);
     8     sort(arr,arr+len);
     9     char *s=arr,*t=arr+len;
    10     do{
    11         printf("%s
    ",arr);
    12     }while(next_permutation(s,t));
    13 }

    法二:dfs

    注意全排列一共有$n!$种,所以num数组一定要开的够大。

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 typedef long long ll;
     4 char arr[100];
     5 char brr[100];
     6 string num[720000];
     7 bool v[100];
     8 int n;
     9 int k=0;
    10 void dfs(int t){
    11     if(t>=n){
    12         num[k++]=brr;
    13         return;
    14     }
    15     
    16     for(int i=0;i<n;i++){//dfs必须多加熟悉 
    17         if(!v[i]){
    18             v[i]=true;
    19             brr[t]=arr[i];
    20             dfs(t+1);
    21             v[i]=false;
    22         }
    23     }
    24 }
    25 int main(){
    26     scanf("%s",arr);
    27     n=strlen(arr);
    28     //sort(arr,arr+n);
    29     //这里不必排,因为最后肯定要排 
    30     dfs(0);
    31     sort(num,num+k);  //这里必须排序 
    32     int m=unique(num,num+k)-num;
    33     for(int i=0;i<m;i++){
    34         cout<<num[i]<<endl;
    35     }
    36 }
  • 相关阅读:
    Hive中将文件加载到数据库表失败解决办法
    Hive安装及配置
    Hadoop下MapReduce实现Pi值的计算
    CentOS下Hadoop运行环境搭建
    kettle案例实现
    假期周总结报告03
    假期周总结报告02
    假期周进度报告01
    阅读笔记6
    阅读笔记5
  • 原文地址:https://www.cnblogs.com/elpsycongroo/p/6912331.html
Copyright © 2011-2022 走看看