每日一题:可重排列

可重排列 - 题目 - Daimayuan Online Judge

很开心能够独立做出这题,刚开始看题目的时候就看出了用dfs全排列,但是由于对dfs不是很熟悉,一开始不知道从何下手

由于有之前类似题目的经验,我开始回顾之前的做法,然后就AC了

类似题目(有详解)见第十届蓝桥杯c++b组_沫刃起的博客-CSDN博客icon-default.png?t=N4P3https://blog.csdn.net/m0_74087709/article/details/129890722

用map来记录每个数的个数

AC代码:

#include
#include
#include
#include
using namespace std;
const int N=1e5+10;
mapmp;
int n;
int sum;
int st[N];
void dfs(int u){
    if(u==sum+1){
        for(int i=1;i<=sum;i++) cout<>n;
    for(int i=1;i<=n;i++){
        int x;
        cin>>x;
        sum+=x;
        mp[i]=x;
    }
    dfs(1);
    return 0;
}

你可能感兴趣的:(每日一题,深度优先,算法,dfs,c++,蓝桥杯)