B3623枚举排列

题目描述

今有 n 名学生,要从中选出 k 人排成一列拍照。

请按字典序输出所有可能的排列方式。

输入格式

仅一行,两个正整数 n,k。

输出格式

若干行,每行 k 个正整数,表示一种可能的队伍顺序。

输入输出样例

输入 #1复制

复制代码
3 2

输出 #1复制

复制代码
1 2
1 3
2 1
2 3
3 1
3 2
cpp 复制代码
#include<bits/stdc++.h>
using namespace std;
int a[10],n,k;
bool b[10]={0},flag=0;
void dfs(int x,int n,int k)
{
    if(x==k)//到边界
    {
        for(int i=0;i<k;i++)//输出
        {
            cout<<a[i]<<" ";
        }
        cout<<endl;
    }
    for(int i=1;i<=n;i++)//从n个数中选
    {
        if(b[i]==1)continue;
            for(int j=0;j<x;j++)//找重复
                if(a[j]==i)flag=1;
            if(flag)continue;
            a[x]=i;
            b[i]=1;//标记
            dfs(x+1,n,k);
            a[x]=0;//回溯
            b[i]=0;//回溯*2
    }
}
int main()
{
    cin>>n>>k;
    dfs(0,n,k);//从0开始搜索
    return 0;
}
相关推荐
CHHH_HHH32 分钟前
【C++11】深入解析C++可变参数模板
开发语言·c++·算法·stl·c++11
十五年专注C++开发1 小时前
fatal error C1189: #error: WinSock.h has already been included 的解决方案
c++·socket·boost
旖-旎4 小时前
《LeetCode 53 最大子数组和 || LeetCode 918 环形子数组的最大和》
c++·算法·leetcode·动态规划
c238565 小时前
《动态规划:从“傻傻穷举”到“过目不忘”的修仙之路》
c++·算法·动态规划
王老师青少年编程6 小时前
csp信奥赛C++高频考点专项训练:【二分答案】案例2:木材加工
c++·二分答案·csp·高频考点·信奥赛·木材加工
aaPIXa6226 小时前
C++模板元编程:编译期计算Fibonacci数列
java·开发语言·c++
Augustzero7 小时前
`co_await` 按下暂停键之后:从零看懂 C++20 协程
c++·后端
知无不研7 小时前
c语言和c++中的静态关键字
开发语言·c++·静态关键字
思麟呀8 小时前
在C++基础上理解CSharp-7
java·jvm·c++·c#
2601_949818098 小时前
Vector从入门到应用(C++ STL动态数组万字全解
开发语言·c++