当前位置: 首页 > news >正文

代码源每日一题div2 可重排列

可重排列 - 题目 - Daimayuan Online Judge

题意:

按字典序从小到大,输出所有序列,满足其中有p1个1, p2个2, ……, pn个n。

思路:

一眼输出全排列

第一次写的时候还对于每一次全排列,都恢复一下map的值

实际上没有必要,因为回溯的过程中自动恢复了

Code:

#include <bits/stdc++.h>
using namespace std;
const int mxn=10;
int n,sum=0;
int p[mxn];
unordered_map<int,int> mp;
vector<int> ans;
void print(){
    for(int i=0;i<=sum-1;i++) printf("%d%c",ans[i],i==sum-1?'\n':' ');
}
void dfs(int dep){
    if(dep>sum){
        print();
        return;
    }
    for(int i=1;i<=n;i++){
        if(mp[i]){
            mp[i]--;
            ans.push_back(i);
            dfs(dep+1);
            mp[i]++;
            ans.pop_back();
        }
    }
}
int main(){
    scanf("%d",&n);
    for(int i=1;i<=n;i++) {scanf("%d",&p[i]),sum+=p[i];mp[i]=p[i];}
    dfs(1);
}

方法2:学一学全排列的stl(待补

相关文章:

  • 【原创】基于Jsp+Servlet的仓库管理系统
  • 堡垒机部署
  • linux的man命令
  • 10 项目沟通管理
  • 三分钟了解JVM的垃圾回收和三色标记
  • MapStruct简单入门
  • Redis介绍、安装与初体验
  • 第七章Redis_Jedis_测试
  • 部署keepalived+LVS
  • C++ 三大特性之继承(二)重点:菱形虚拟继承
  • 来写个贪吃蛇小游戏吧(TypeScript版本)
  • 【ASM】字节码操作 Label 如何使用 生成 if 语句
  • 【云原生】五年博主教你用阿里云Serverless免费额度搭建个人应用服务, 还不赶快上车。
  • 大学生HTML CSS动漫主题网页制作——刀剑神域(6页) dreamweaver作业静态HTML网页设计
  • vue-生命周期钩子函数-axios-$refs-$nextTick的使用
  • 【跃迁之路】【669天】程序员高效学习方法论探索系列(实验阶段426-2018.12.13)...
  • 【知识碎片】第三方登录弹窗效果
  • Android交互
  • HTTP 简介
  • iOS高仿微信项目、阴影圆角渐变色效果、卡片动画、波浪动画、路由框架等源码...
  • Laravel核心解读--Facades
  • PHP 使用 Swoole - TaskWorker 实现异步操作 Mysql
  • 从地狱到天堂,Node 回调向 async/await 转变
  • 分布式事物理论与实践
  • 类orAPI - 收藏集 - 掘金
  • 判断客户端类型,Android,iOS,PC
  • 驱动程序原理
  • 使用权重正则化较少模型过拟合
  • 数据科学 第 3 章 11 字符串处理
  • 提升用户体验的利器——使用Vue-Occupy实现占位效果
  • 阿里云服务器如何修改远程端口?
  • ​Base64转换成图片,android studio build乱码,找不到okio.ByteString接腾讯人脸识别
  • ​LeetCode解法汇总2304. 网格中的最小路径代价
  • (2015)JS ES6 必知的十个 特性
  • (二)正点原子I.MX6ULL u-boot移植
  • (免费领源码)python#django#mysql公交线路查询系统85021- 计算机毕业设计项目选题推荐
  • (生成器)yield与(迭代器)generator
  • (学习日记)2024.04.10:UCOSIII第三十八节:事件实验
  • (幽默漫画)有个程序员老公,是怎样的体验?
  • (转)eclipse内存溢出设置 -Xms212m -Xmx804m -XX:PermSize=250M -XX:MaxPermSize=356m
  • .helper勒索病毒的最新威胁:如何恢复您的数据?
  • .NET CORE Aws S3 使用
  • .NET Core中Emit的使用
  • .net 逐行读取大文本文件_如何使用 Java 灵活读取 Excel 内容 ?
  • .Net多线程总结
  • .net之微信企业号开发(一) 所使用的环境与工具以及准备工作
  • /bin/rm: 参数列表过长"的解决办法
  • @ComponentScan比较
  • @data注解_SpringBoot 使用WebSocket打造在线聊天室(基于注解)
  • @Pointcut 使用
  • [2024] 十大免费电脑数据恢复软件——轻松恢复电脑上已删除文件
  • [android学习笔记]学习jni编程
  • [boost]使用boost::function和boost::bind产生的down机一例
  • [bzoj 3534][Sdoi2014] 重建
  • [BZOJ4016][FJOI2014]最短路径树问题