生成1~n的排列:

#include<iostream>
using namespace std;
void print_permutation(int n, int *A, int cur) /*n代表这个排列中的元素数*/
{
if(cur == n) /*边界*/
{
for(int i = 0; i < n; i++)
cout << A[i] << " ";
cout << endl;
}
else
for(int i = 1; i <= n; i++) /*在A中插入1~n这几个数*/
{
int ok = 1;
for(int j = 0; j < cur; j++)
{
if(A[j] == i)
ok = 0; /*从前的元素中已经含有i这个数时,就不再插入它*/
}
if(ok)
{
A[cur] = i;
print_permutation(n, A, cur + 1); /*递归*/
}
}
}
int main()
{
const int maxn = 200;
int A[maxn];
print_permutation(5, A, 0); /*生成由1~5组成的全排列,cur初始值设为0*/
}

生成可重集的排列:

#include<iostream>
#include<algorithm>
using namespace std;
void print_permutation(int n, int *P, int *A, int cur)
{
if(cur == n)
{
for(int i = 0; i < n; i++)
cout << A[i] << " ";
cout << endl;
}
else
for(int i = 0; i < n; i++)
{
if(!i || P[i] != P[i-1])
{
int c1 = 0, c2 = 0;
for(int j = 0; j < cur; j++)
{
if(A[j] == P[i])
c1++; /*看A中有多少与P[i]相同的元素*/
}
for(int j = 0; j < n; j++)
{
if(P[i] == P[j])
c2++; /*看P中有多少与P[i]相同的元素*/
}
if(c1 < c2) /*P中的那个元素还没用或还没用完,则将它存入数组A中*/
{
A[cur] = P[i];
print_permutation(n, P, A, cur + 1);
}
}
}
}
int main()
{
const int maxn = 200;
int P[maxn], A[maxn];
int n;
cin >> n;
for(int i = 0; i < n; i++)
cin >> P[i];
sort(P, P + n);
print_permutation(n, P, A, 0);
}

这个大佬讲的更多些

生成1~n的排列(模板),生成可重集的排列(对应紫书P184, P185)的更多相关文章

  1. 生成1~n的排列,以及生成可重集的排列

    #include <iostream> using namespace std; void printPermutation(int n, int* A, int cur) { if (c ...

  2. STL next_permutation(a,a+n) 生成一个序列的全排列。满足可重集。

    /** 题目: 链接: 题意: 思路: */ #include <iostream> #include <cstdio> #include <vector> #in ...

  3. 使用T4模板生成不同部署环境下的配置文件

    在开发企业级应用的时候,通常会有不同的开发环境,比如有开发环境,测试环境,正式环境,生产环境等.在一份代码部署到不同环境的时候,不同环境的配置文件可能需要根据目标环境不同而不同.比如在开发环境中,数据 ...

  4. CSharpGL(12)用T4模板生成CSSL及其renderer代码

    CSharpGL(12)用T4模板生成CSSL及其renderer代码 2016-08-13 由于CSharpGL一直在更新,现在这个教程已经不适用最新的代码了.CSharpGL源码中包含10多个独立 ...

  5. MVC实用架构设计(三)——EF-Code First(3):使用T4模板生成相似代码

    前言 经过前面EF的<第一篇>与<第二篇>,我们的数据层功能已经较为完善了,但有不少代码相似度较高,比如负责实体映射的 EntityConfiguration,负责仓储操作的I ...

  6. ASP.NET MVC 解析模板生成静态页一(RazorEngine)

    简述 Razor是ASP.NET MVC 3中新加入的技术,以作为ASPX引擎的一个新的替代项.在早期的MVC版本中默认使用的是ASPX模板引擎,Razor在语法上的确不错,用起来非常方便,简洁的语法 ...

  7. ccf模板生成

    问题描述 成成最近在搭建一个网站,其中一些页面的部分内容来自数据库中不同的数据记录,但是页面的基本结构是相同的.例如,对于展示用户信息的页面,当用户为 Tom 时,网页的源代码是 而当用户为 Jerr ...

  8. 利用T4模板生成ASP.NET Core控制器的构造函数和参数

    前言 在ASP.NET Core中引入了DI,并且通过构造函数注入参数,控制器中会大量使用DI注入各种的配置参数,如果配置注入的参数比较多,而且各个控制器需要的配置参数都基本一样的话,那么不断重复的复 ...

  9. Visual Studio 2013 EF5实体数据模型 EDMX 使用 T4模板生成后使用 ObjectContext对象

    Visual Studio 2013 EF5实体数据模型 EDMX 使用 T4模板生成后的继承对象为DbContext,以前的熟悉的ObjectContext对象不见了,当然使用ObjectConte ...

随机推荐

  1. Kubernetes 之 MySQL 持久存储和故障转移(十一)

    目录 一.规划 二.部署 1.创建 PV 和 PVC 2.部署 MySQL 3.更新 MySQL 数据 4.故障转移 一.规划 我们接着之前的文档的架构规划进行下面的操作. IP 角色 192.168 ...

  2. Linq调试实时输出信息扩展方法(摘抄)

    原文在此 [译]如何在C#中调试LINQ查询 原linq语句: var res = employees .Where(e => e.Gender == "Male") .Ta ...

  3. TemplateDoesNotExist

    路径问题,可能是没有配置这一行:

  4. 安装Delphi7的错误

    delphi7运行不正常的提示unable to rename'c:\program files\Borland\delphi7\Bin\delphi32.$$$'to'c:\program file ...

  5. Appium移动端自动化测试--录制测试用例并运行

    目录 文章目录如下 录制用例并执行 1.使用Appium desktop录制用例 2.安装Pythony依赖Appium-Python-Client 3.增加隐式等待增强稳定性 4.重新运行 文章目录 ...

  6. Django学习之django自带的contentType表

    Django学习之django自带的contentType表 通过django的contentType表来搞定一个表里面有多个外键的简单处理: 摘自:https://blog.csdn.net/aar ...

  7. Linux组管理、用户管理、查看用户信息、usermod、which、切换用户、修改文件具体权限

    组管理 提示:创建组/删除组的终端命令都需要通过sudo执行 序号 命令 作用 01 groupadd组名 添加组 02 groupdel组名 删除组 03 cat/etc/group 确认组信息 0 ...

  8. Golang_互斥锁

    为什么需要锁? 在并发的情况下,多个线程或协程同时去修改一个变量.使用锁能保证在某一时间点内,只有一个协程或线程修改这一变量. 锁的概念就是,我正在处理 a(锁定),你们等着,等我处理完了(解锁),你 ...

  9. vue+element+upload实现头像上传

    后台 @RequestMapping("/up") public JSONObject up(@RequestParam("picFile") Multipar ...

  10. Elasticsearch-6.7.0系列(六)ES设置集群密码

    感谢此老兄:<手把手教你搭建一个 Elasticsearch 集群> 前提准备 安装kibana-6.7.0: <Elasticsearch-6.7.0系列(三)5601端口 kib ...