zoukankan      html  css  js  c++  java
  • 南阳366--D的小L(Dfs)

    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
    来源
    原创
    上传者
    kapop
    RE: 就是组合数那一类题。
     1 #include <cstdio>
     2 #include <cstring>
     3 #include <iostream>
     4 using namespace std;
     5 int n, dis[10], vis[10];
     6 void Dfs(int a)
     7 {
     8     if(a == n)
     9     {
    10         for(int i = 0; i < n; i++)
    11             printf("%d", dis[i]);
    12         printf("
    ");
    13         return;
    14     }
    15     else
    16     {
    17         for(int i = 1; i <= n; i++)
    18         {
    19             if(vis[i])
    20                 continue;
    21             vis[i] = 1;
    22             dis[a] = i; 
    23             Dfs(a + 1);
    24             vis[i] = 0;
    25         }
    26     }
    27 }
    28 int main()
    29 {
    30     int t;
    31     scanf("%d", &t);
    32     while(t--) 
    33     {
    34         scanf("%d", &n);
    35         memset(vis, 0, sizeof(vis));
    36         Dfs(0);
    37     }
    38     return 0;
    39 } 
     1 #include <cstdio>
     2 #include <cstring>
     3 #include <iostream>
     4 #include <algorithm>
     5 using namespace std;
     6 int main()
     7 {
     8     int t;
     9     scanf("%d", &t);
    10     while(t--)
    11     {
    12         int n, list[10];
    13         scanf("%d", &n);
    14         for(int i = 0; i < n; i++)
    15             list[i]  = i + 1;
    16         int pre = -1;
    17         do{
    18             if(list[n-1] != pre)
    19             {
    20                 for(int i = 0; i < n; i++)
    21                     printf("%d", list[i]);
    22                 printf("
    ");
    23                 pre = list[n-1];
    24             }
    25         }while(next_permutation(list, list + n));
    26     }
    27     return 0;
    28 }
    STL--next_permutation(a, a+n)(我nm, 函数名容易记错有木有。)
  • 相关阅读:
    RabbitMQ的ACK机制
    Flex保存文件 FileReference.save(data,filename)
    Flex Builder cannot locate the required debugger version of Flash Player
    Flex每日小记
    IT民工
    R读取文件内容到Frame
    ArcGIS9.2 9.3
    超时空的心情
    ArcMap中设置.mxd相对路径
    MyEclipse Flex Tomcat BlazeDS
  • 原文地址:https://www.cnblogs.com/soTired/p/4726106.html
Copyright © 2011-2022 走看看