zoukankan      html  css  js  c++  java
  • NYOJ366 D的小L 全排列

     

    D的小L

    时间限制:4000 ms  |  内存限制:65535 KB
    难度:2
     
    描述
          一天TC的匡匡找ACM的小L玩三国杀,但是这会小L忙着哩,不想和匡匡玩但又怕匡匡生气,这时小L给匡匡出了个题目想难倒匡匡(小L很D吧),有一个数n(0<n<10),写出1到n的全排列,这时匡匡有点囧了,,,聪明的你能帮匡匡解围吗?
     
    输入
    第一行输入一个数N(0<N<10),表示有N组测试数据。后面的N行输入多组输入数据,每组输入数据都是一个整数x(0<x<10)
    输出
    按特定顺序输出所有组合。
    特定顺序:每一个组合中的值从小到大排列,组合之间按字典序排列。
    样例输入
    2
    2
    3
    样例输出
    12
    21
    123
    132
    213
    231
    312
    321
    
     1 /* 功能Function Description:      NYOJ-366 全排列问题
     2    开发环境Environment:           DEV C++ 4.9.9.1
     3    技术特点Technique:
     4    版本Version:
     5    作者Author:                    可笑痴狂
     6    日期Date:                      20120802
     7    备注Notes:
     8 */
     9 
    10 
    11 //代码一:---STL
    12 #include<iostream>
    13 #include<algorithm>
    14 using namespace std;
    15 
    16 int main()
    17 {
    18     int T,i,n;
    19     int a[9]={1,2,3,4,5,6,7,8,9};
    20     cin>>T;
    21     while(T--)
    22     {
    23         cin>>n;
    24     //    sort(a,a+n);   每次开始之前不用重新排列,因为生成所有全排列之后虽然跳出了do循环但是数组又回到了初始的升序状态
    25         do
    26         {
    27             for(i=0;i<n;++i)
    28                 cout<<a[i];
    29             cout<<endl;
    30         }while(next_permutation(a,a+n));
    31         /*
    32             for(i=0;i<9;++i)
    33                 cout<<a[i];   //测试跳出循环后输出1 2 3 4 5 6 7 8 9 即又回到了初始升序的状态
    34         */
    35     }
    36     return 0;
    37 }
    38 
    39 
    40 
    41 
    42 //代码二:----递归+回溯
    43 #include<iostream>
    44 #include<cstring>
    45 using namespace std;
    46 
    47 bool visit[10];
    48 int n,a[10];
    49 
    50 void fun(int k)
    51 {
    52     int i;
    53     if(k==n)
    54     {
    55         for(i=0;i<n;++i)
    56             cout<<a[i];
    57         cout<<endl;
    58     }
    59     else
    60     {
    61         for(i=1;i<=n;++i)
    62             if(!visit[i])
    63             {
    64                 a[k]=i;
    65                 visit[i]=true;
    66                 fun(k+1);
    67                 visit[i]=false;
    68             }
    69     }
    70 }
    71 
    72 int main()
    73 {
    74     int T;
    75     cin>>T;
    76     while(T--)
    77     {
    78         memset(visit,false,sizeof(visit));
    79         cin>>n;
    80         fun(0);
    81     }
    82     return 0;
    83 }
    
    
    功不成,身已退
  • 相关阅读:
    OnContextMenu事件
    一个不错的js制作的右键菜单
    用JS访问iframe中的元素
    Java中static、final用法小结
    Android系统层次结构及分析
    final 与static final修饰变量区别
    Jquery取得iframe中元素的几种方法Javascript Jquery获取Iframe的元素、内容或者ID,反之也行!
    js+css实现页面右键菜单
    编码和字符集的关系
    关于互联网开放的一点看法
  • 原文地址:https://www.cnblogs.com/dongsheng/p/2620639.html
Copyright © 2011-2022 走看看