• 51Nod 1384 全排列


     1 #include <iostream>
     2 #include <cmath>
     3 #include <string>
     4 #include <cstring>
     5 #include <algorithm>
     6 #include <map>
     7 using namespace std;
     8 
     9 char s[50];
    10 
    11 bool cmp(char x,char y){
    12     return x < y;
    13 }
    14 
    15 int main(){
    16     cin >> s;
    17     int len = strlen(s);
    18     sort(s, s+len, cmp);
    19     //cout << s<< endl;
    20     do{
    21         cout<<s<< endl;
    22     }
    23     while(next_permutation(s,s+len));
    24     return 0;
    25 }

    回溯:

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cstring>
     4 #include<algorithm>
     5 using namespace std;
     6 char s[20];
     7 int book[30],a[20],ans[20],n;
     8 
     9 void dfs(int dis,int cnt)
    10 {
    11     int i,j;
    12     if(cnt==n) {
    13         for(i=1;i<=n;i++) cout<<ans[i];
    14         cout<<endl;
    15         return;
    16     } 
    17     for(i=dis;i<n;i++) {
    18         if(book[i]==0) {
    19             book[i]=1;
    20             ans[cnt+1]=a[i];
    21             dfs(dis,cnt+1);
    22             book[i]=0;
    23             while(i<n && a[i]==a[i+1]) i++;
    24         }
    25     }
    26     
    27 }
    28 
    29 
    30 int main()
    31 {
    32      ios::sync_with_stdio(false);  
    33     int i,j;
    34     cin>>s;
    35     n=strlen(s);
    36     for(i=0;i<n;i++) a[i]=s[i]-'0';
    37     sort(a,a+n);
    38     dfs(0,0);
    39     return 0;
    40 } 
  • 相关阅读:
    有限制的最大连续和问题
    Codevs 5056 潜水员
    Codevs 1958 刺激
    Codevs 3731 寻找道路 2014年 NOIP全国联赛提高组
    [NOIP2014]解方程
    Codevs 3729 飞扬的小鸟
    Codevs 1689 建造高塔
    Codevs 2102 石子归并 2
    C语言基础之进制的那些事(1)
    指针
  • 原文地址:https://www.cnblogs.com/ouyang_wsgwz/p/9013023.html
Copyright © 2020-2023  润新知