生成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. (C#)Application.Exit()、Environment.Exit(0)区别

    Application.Exit:通知winform消息循环退出.会在所有前台线程退出后,退出应用 强行退出方式,就像 Win32 的 PostQuitMessage().它意味着放弃所有消息泵,展开 ...

  2. abp_vue导入导出excel

    后端abp,前端vue导入excel,开始准备用直接用npoi,觉得要写太多的代码,就算从以前的复制粘贴也麻烦,所以偷懒直接用别人的轮子 Magicodes.IE.这样可以节省很多工作,根据实体生成e ...

  3. 【转】Axure RP9.0.0.3661Team Edition激活码

    被授权人:Axure 授权密码:ydiJnG8quHEhHLu/MWonjkeul5LYB1+tX9fyPVnpdmU0cb/NJzVs45uD7z5Iswmi 转载于:http://menvscod ...

  4. 微服务架构下使用Spring Cloud Zuul作为网关将多个微服务整合到一个Swagger服务上

    注意: 如果你正在研究微服务,那必然少不了服务之间的相互调用,哪么服务之间的接口以及api就必须生成系统的管理文档了.如果你希望更好的管理你的API,你希望有一个工具能一站式地解决API相关的所有事情 ...

  5. Echarts数据可视化grid直角坐标系(xAxis、yAxis)

    mytextStyle={ color:"#333", //文字颜色 fontStyle:"normal", //italic斜体 oblique倾斜 font ...

  6. Idea破解到2100年的简单方法

    第一步下载IntelliJ IDEA 2018.1.6版本,比这个更新的版本得你自己找注册码,因为旧的注册码对最新版本的软件不管用,所以建议还是下载这个版本,或者这个版本之前的也可以: 地址:http ...

  7. python 坑1

    目录 1.编码解码 2.基础数据类型补充: 2.1 str: 2.2list: 2.3tuple: 2.4dict: 2.5set: 3.坑 4.类型转换: 5.数据类型: 1.编码解码 编码:将文字 ...

  8. 【C语言】了解原码、反码、补码

    原码.反码.补码 在学习C语言的过程中,有遇到补码这个问题,当时感觉懂了,有貌似不是很懂:然后查了一些文档,整理了一番,以后忘记了可以再翻开这篇文档,查漏补缺吧! 原码 原码是指一个二进制数左边加上符 ...

  9. Spring MVC传输对象属性

    今天搬砖时遇到一个问题,前端使用JSP+form传输数据,后台使用Spring MVC接收,但是接收到的对象属性一直是null,找了好久才发现原因,代码如下 前端代码   后端代码   需要注意一点 ...

  10. 从create-react-app开始,构建项目架构

    1.生成项目 命令行执行:create-react-app  myapp,生成如下结构: 2.安装sass依赖,让你在项目中可以使用scss模块化,index.module.scss: npm i n ...