生成1~n的排列(模板),生成可重集的排列(对应紫书P184, P185)
生成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~n的排列,以及生成可重集的排列
#include <iostream> using namespace std; void printPermutation(int n, int* A, int cur) { if (c ...
- STL next_permutation(a,a+n) 生成一个序列的全排列。满足可重集。
/** 题目: 链接: 题意: 思路: */ #include <iostream> #include <cstdio> #include <vector> #in ...
- 使用T4模板生成不同部署环境下的配置文件
在开发企业级应用的时候,通常会有不同的开发环境,比如有开发环境,测试环境,正式环境,生产环境等.在一份代码部署到不同环境的时候,不同环境的配置文件可能需要根据目标环境不同而不同.比如在开发环境中,数据 ...
- CSharpGL(12)用T4模板生成CSSL及其renderer代码
CSharpGL(12)用T4模板生成CSSL及其renderer代码 2016-08-13 由于CSharpGL一直在更新,现在这个教程已经不适用最新的代码了.CSharpGL源码中包含10多个独立 ...
- MVC实用架构设计(三)——EF-Code First(3):使用T4模板生成相似代码
前言 经过前面EF的<第一篇>与<第二篇>,我们的数据层功能已经较为完善了,但有不少代码相似度较高,比如负责实体映射的 EntityConfiguration,负责仓储操作的I ...
- ASP.NET MVC 解析模板生成静态页一(RazorEngine)
简述 Razor是ASP.NET MVC 3中新加入的技术,以作为ASPX引擎的一个新的替代项.在早期的MVC版本中默认使用的是ASPX模板引擎,Razor在语法上的确不错,用起来非常方便,简洁的语法 ...
- ccf模板生成
问题描述 成成最近在搭建一个网站,其中一些页面的部分内容来自数据库中不同的数据记录,但是页面的基本结构是相同的.例如,对于展示用户信息的页面,当用户为 Tom 时,网页的源代码是 而当用户为 Jerr ...
- 利用T4模板生成ASP.NET Core控制器的构造函数和参数
前言 在ASP.NET Core中引入了DI,并且通过构造函数注入参数,控制器中会大量使用DI注入各种的配置参数,如果配置注入的参数比较多,而且各个控制器需要的配置参数都基本一样的话,那么不断重复的复 ...
- Visual Studio 2013 EF5实体数据模型 EDMX 使用 T4模板生成后使用 ObjectContext对象
Visual Studio 2013 EF5实体数据模型 EDMX 使用 T4模板生成后的继承对象为DbContext,以前的熟悉的ObjectContext对象不见了,当然使用ObjectConte ...
随机推荐
- CentOS安装部署jumperserver(堡垒机)
可以参考官方的文档:http://docs.jumpserver.org/zh/docs/introduce.html 测试环境 系统: CentOS 7 IP: 192.168.244.144 设置 ...
- mysql查看和修改最大连接数
查看最大连接数 SHOW VARIABLES LIKE '%max_connections%'; 修改最大连接数 ;
- javascript添加到收藏夹写法
javascript添加到收藏夹写法 <pre>function addFavorite2() { var url = window.location; var title = docum ...
- c++11 standardized memory model 内存模型
C++11 标准中引入了内存模型,其目的是为了解决多线程中可见性和顺序(order).这是c++11最重要的新特征,标准忽略了平台的差异,从语义层面规定了6种内存模型来实现跨平台代码的兼容性.多线程代 ...
- Get Docker Engine - Community for Ubuntu
Get Docker Engine - Community for Ubuntu Uninstall old versions$ sudo apt-get remove docker docker-e ...
- python 之 Django框架(ORM常用字段和字段参数、关系字段和和字段参数)
12.324 Django ORM常用字段 .id = models.AutoField(primary_key=True):int自增列,必须填入参数 primary_key=True.当model ...
- 100天搞定机器学习|Day55 最大熵模型
1.熵的定义 熵最早是一个物理学概念,由克劳修斯于1854年提出,它是描述事物无序性的参数,跟热力学第二定律的宏观方向性有关:在不加外力的情况下,总是往混乱状态改变.熵增是宇宙的基本定律,自然的有序状 ...
- TextField 、 FTE、 TLF 的使用情景和简单说明
作者:tiangej 来源:CSDN 原文:https://blog.csdn.net/tiangej/article/details/16859239 版权声明:本文为博主原创文章,转载请附上博文链 ...
- [CF436D]Pudding Monsters
题目大意:有一个长度为$2\times 10^5$的板,有$n(n\leqslant 10^5)$个格子$a_1,\dots,a_n$有布丁怪兽,一开始连续的怪兽算一个怪兽,有$m(m\leqslan ...
- 登录和退出Mysql
这里介绍的是通过cmd方式登录和退出Mysql的方式 一.登录命令 登录命令:mysql.exe -h主机地址 -P端口 -u用户名 -p密码 即依次输入服务器地址.服务器监听的端口.用 ...