WA 67 求助

B3623 枚举排列(递归实现排列型枚举)

qwq___qaq @ 2022-05-02 10:14:55

#include<bits/stdc++.h>
using namespace std;
int n,r,a[105];
int main(){
    cin>>n>>r;
    for(int i=1;i<=n;i++)
        a[i]=i;
    do{
        for(int i=1;i<=r;i++)
            printf("%d ",a[i]);
        puts("");
    }while(next_permutation(a+1,a+n+1));
    return 0;
}

by TheSky233 @ 2022-05-02 10:33:24

这题显然不能这么做吧。

比如 5 2

next_permutation 枚举的是全排列,也就是说

1 2 3 4 5
1 2 3 5 4
1 2 4 3 5
1 2 4 5 3
......

这些全会被枚举到,然后按照您的思路

这些全输出的是

1 2
1 2
1 2
1 2

by Arctic_1010 @ 2022-05-11 10:42:24

@TheSky233 可以嗯造 next_permutation,但是可能需要哈希判重。


|