补充:如果某步骤的解可以由多个步骤得到,而每个步骤都有若干种选择,这些候选方式可能依赖于之前的选择,

且可以用递归枚举法实现,则它的工作方式可以用解答树来描述

可重:如果问题变成输入数组p,并按字典序输出数组A个元素的所有全排列,则需要修改代码集的全排列

#include<cstdio>
#include<algorithm>
using namespace std;int P[100], A[100];// 输出数组P中元素的全排列。数组P中可能有重复元素
void print_permutation(int n, int* P, int* A, int cur) {if(cur == n) {for(int i = 0; i < n; i++) printf("%d ", A[i]);printf("\n");//printf("cur=%d\n",cur);} elsefor(int i = 0; i < n; i++)//p[i] == p[i-1]的话,那么p[i]这个数只考虑p[i-1]的就行//i == 0 时 那么必定要取 因为没有比它更前的可以考虑if(!i || P[i] != P[i-1]) {int c1 = 0, c2 = 0;//A是已经填进去的, P是还没有填的//用c1 c2统计已经填进去的个数和全部, 如果c1 < c2说明有没填进去的for(int j = 0; j < cur; j++)if(A[j] == P[i]) c1++;for(int j = 0; j < n; j++)if(P[i] == P[j]) c2++;
// printf("i=%d cur=%d c1=%d c2=%d\n", i, cur,c1,c2);if(c1 < c2) {      A[cur] = P[i]; print_permutation(n, P, A, cur+1);}}
}int main() {int i, n;scanf("%d", &n);for(i = 0; i < n; i++)scanf("%d", &P[i]);sort(P, P+n);print_permutation(n, P, A, 0);return 0;
}

测试

转载于:https://www.cnblogs.com/is-Tina/p/7475951.html

算法入门经典-第七章 例题7-2-2 可重集的排列相关推荐

  1. 算法入门经典-第七章 例题7-2 八皇后问题

    原本利用回溯思想解决的经典八皇后问题,其实也是可以用递归解决的~ 八皇后的递归解决思路: 从第一行开始,依次判断0~8列的哪一列可以放置Queen,这样就确定了该行的Queen的位置,然后行数递增,继 ...

  2. 算法入门经典-第七章 例题7-2最大乘积

    最大乘积 输入n个元素组成的序列s,你需要找出一个乘积最大的连续子序列.如果这个最大的成绩不是正数,应输入-1(表示无解).输入0结束输入.1<=n<=18,-10<=Si<= ...

  3. 算法入门经典第六章 例题6-8 树

    题意: 给一棵点带权的二叉树的中序和后序遍历,找一个叶子使得它到根的路径上的权值的和最小,如果多解,那该叶子本身的权值应该最小 解题思路: 1.用getline()输入整行字符,然后用stringst ...

  4. 算法入门经典第六章 例题6-2 铁轨

    题目描述 某城市有一个火车站,铁轨铺设如图所示.有n节车厢从A方向驶入车站,按进站顺序编号为1~n.你的任务是让它们按照某种特定的顺序进入B方向的铁轨并驶出车站.为了重组车厢,你可以借助中转站C.这是 ...

  5. 牛客:【2021秋季算法入门班第七章习题:动态规划1】部分题解:方块与收纳盒、舔狗舔到最后一无所有、可爱の星空、[NOIP1999]拦截导弹

    题单链接:牛客竞赛_ACM/NOI/CSP/CCPC/ICPC算法编程高难度练习赛_牛客竞赛OJ (nowcoder.com)  P1001 方块与收纳盒 传送门:1001-方块与收纳盒_2021秋季 ...

  6. 算法竞赛入门经典 第七章 总结

    目录: 7.1 简单枚举 7.2 枚举排列 7.3 子集生成 7.1 简单枚举 例题7-1 除法(Division, UVa 725) 输入正整数n,按从小到大的顺序输出所有形如abcde/fghij ...

  7. 算法竞赛入门经典第六章(例题) B - Rails(涉及到栈的运用)

    题目:B - Rails 原题链接:https://cn.vjudge.net/contest...: 题目大意:先输入一个表示火车的节数,火车原本是按从1到n的顺序,但是一起进的还是分开进的是不一定 ...

  8. 算法入门经典 第三章

    scanf 遇到tab或空格或换行符停下来 1.例题2-1 7744问题 从数本身看 从个位数的数字看 #include <iostream> #include<math.h> ...

  9. 算法入门经典习题第一章

    习题1-1 平均数(average) #include<iostream> #include<bits/stdc++.h> using namespace std; int m ...

最新文章

  1. python下载网页里面所有的图片-python批量下载图片的三种方法
  2. EffectiveC++编程的50个建议
  3. 前端学习(2520):环境搭建
  4. sharepoint 到底是什么
  5. Java 实现线性运动界面_java 实现顺序结构线性列表
  6. 高性能JavaScript(您值得一看)
  7. 51单片机控制舵机c语言代码,一文解析51单片机PWM双舵机控制(附程序)
  8. vue 倒计时 插件_vue倒计时组件
  9. ps修改图像像素压缩图片大小
  10. QT菜单栏颜色与背景颜色设置
  11. 用Changedetection监控网页的变化
  12. 180420 逆向-DDCTF_WP(Re)
  13. android studio编译app,Android Studio编译项目报错
  14. python已知两条直角边求斜边,Python实现“已知三角形两个直角边,求斜边”
  15. js生成token 七牛云_自己尝试生成七牛云的accessToken,但一直返回{error:bad token}...
  16. 小学生台灯哪个品牌更护眼?精选教育部入围护眼照明品牌
  17. Python for everyone chapter 1
  18. mobx在react如何使用
  19. linux和android比较大小写,不区分大小写的串比较---Windows下的stricmp和Linux下的strcasecmp, 遇到了, 所以记录一下!...
  20. 棕榈油复制2008年走势?棕榈油认沽大涨,YP开始抄底2022.3.4

热门文章

  1. 消控中心人员配置_建筑能耗监测系统集中化运行管理模式和人员配置!
  2. python的plt函数_plt.plot画图函数
  3. 【C++ STL】Map库使用方法
  4. 【深度学习入门到精通系列】什么是消融实验(Ablation experiment)
  5. python从入门到精通视频百度云资源_python从入门到精通视频(全60集)声音修复版...
  6. 属性子集选择的基本启发方法_图网络基本属性
  7. 湖南网络推广浅谈网站首页降权怎么办?
  8. 网络营销中SEO是最常用的“圈粉”引流方式之一
  9. SEO优化倦怠期?SEO排名和收录都不错时,到底还需不需要日更?
  10. 优质的网站结构能给SEO优化带来哪些好处?