• 擅长排列的小明


    擅长排列的小明

    时间限制:1000 ms  |  内存限制:65535 KB
    难度:4
    描述
    小明十分聪明,而且十分擅长排列计算。比如给小明一个数字5,他能立刻给出1-5按字典序的全排列,如果你想为难他,在这5个数字中选出几个数字让他继续全排列,那么你就错了,他同样的很擅长。现在需要你写一个程序来验证擅长排列的小明到底对不对。
    输入
    第一行输入整数N(1<N<10)表示多少组测试数据,
    每组测试数据第一行两个整数 n m (1<n<9,0<m<=n)
    输出
    在1-n中选取m个字符进行全排列,按字典序全部输出,每种排列占一行,每组数据间不需分界。如样例
    样例输入
    2
    3 1
    4 2
    样例输出
    1
    2
    3
    12
    13
    14
    21
    23
    24
    31
    32
    34
    41
    42
    43

    题解:没事水的一道题,编译错误,没有pthread的头文件。。。。

    代码

    #include <iostream>
    #include <pthread.h>
    #include <algorithm>
    #include <cstdio>
    #include <queue>
    #include <cstring>
    using namespace std;
    int ans[10];
    int vis[10];
    struct work_arg{
        int n, m;
        work_arg(int n, int m){
            this->n = n; this->m = m;    
        }
        work_arg(){
        
        }
    };
    
    void dfs(int i, int n, int m);
    
    void *work(void* arg){
        work_arg* warg = (work_arg *)arg;
        int n = warg->n, m = warg->m;
        memset(vis, 0, sizeof(vis));
        dfs(0, n, m);
    }
    
    void dfs(int i, int n, int m){
        if(i == m){
            for(int p = 0; p < m; p++){
                //if(p)printf(" ");
                printf("%d", ans[p]);
            }
            puts(" ");
            return;
        }
        for(int p = 1; p <= n; p++){
            if(vis[p])continue;
            vis[p] = 1;
            ans[i] = p;
            dfs(i + 1, n, m);
            vis[p] = 0;
        }
    }
    
    int main(){
        pthread_t pth;
        int T;
        scanf("%d", &T);
        while(T--){
            int m, n;
            scanf("%d%d", &n, &m);
            work_arg arg(n, m);
            pthread_create(&pth, NULL, work, (void *)&arg);
            pthread_join(pth, NULL);
        }
        return 0;
    }
    
    
  • 相关阅读:
    抽象代数学习笔记
    WC2021 游记
    简单的数学题
    前缀和公式
    杜教筛
    [模板]BZOJ4756线段树合并
    SPOJ 694
    bzoj1367 可并堆
    莫比乌斯反演(理论)
    es6 Set数据结构
  • 原文地址:https://www.cnblogs.com/handsomecui/p/5858053.html
Copyright © 2020-2023  润新知