当前位置:网站首页>57.【全排列的详细分析】
57.【全排列的详细分析】
2022-08-03 09:48:00 【李在奋斗……】
1.1 全排列的介绍
从n个不同元素中任取m(m≤n)个元素,按照一定的顺序排列起来,叫做从n个不同元素中取出m个元素的一个排列。当m=n时所有的排列情况叫全排列。
2.1 方法和思路
进行穷举法和特殊函数的方法,穷举法的基本思想是全部排列出来.特殊函数法进行特殊排列.
3.1 穷举法
【不包含重复数字的解法】
#include <iostream>
using namespace std;
int main()
{
int a[3];
cout << "请输入一个三位数:" << endl;
for (int m = 0; m < 3; m++)
{
cin >> a[m];
}
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 3; j++)
{
for (int k = 0; k < 3; k++)
{
if (i != j && i != k && j != k)
{
cout << a[i] << a[j] << a[k] << " ";
}
}
}
}
}
【包含重复数据的解法】
#include <iostream>
using namespace std;
int main()
{
int a[3];
cout << "请输入一个三位数:" << endl;
for (int m = 0; m < 3; m++)
{
cin >> a[m];
}
for ( int i = 0; i < 3; i++)
{
for (int j = 0; j < 3; j++)
{
for (int k = 0; k < 3; k++)
{
if (i != j && i != k && j != k)
{
cout << a[i] << a[j] << a[k] << " ";
}
else if(i==j&&i==k&&j==k)
{
cout << a[i] << a[j] << a[k] << " ";
}
}
}
}
}
4.1 next_permutation()函数法而且调用了sort()排序函数
什么是sort函数? http://t.csdn.cn/Tq9Wn
这种方法也是小编特别推荐使用的,因为这种方法不仅可以高效的进行排序而且特别容易理解.
next_permutation(s1.begin(), s1.end())
解释:s1.begin(),是字符串的开头,s1.end()是字符串的结尾
头文件:
#include <algorithm>
4.1.1 升序
#include <iostream>
#include <algorithm>
#include <string.h>
using namespace std;
int main()
{
string s1;
cout << "请输入您要的数据:" << endl;
cin >> s1;
do
{
cout << s1 << " ";
} while (next_permutation(s1.begin(), s1.end()));
}
4.1.2 降序
bool cmp(int a, int b)
{
return a > b;
}
while (next_permutation(s1.begin(), s1.end(),cmp));
sort(s1.begin(), s1.end(), cmp);
比升序多了以上三个数据
#include <iostream>
#include <algorithm>
#include <string.h>
using namespace std;
bool cmp(int a, int b)
{
return a > b;
}
int main()
{
string s1;
cout << "请输入您要的数据:" << endl;
cin >> s1;
sort(s1.begin(), s1.end(), cmp);
do
{
cout << s1 << " ";
} while (next_permutation(s1.begin(), s1.end(),cmp));
}
5 .总结
有穷法具有有限性,然而特殊函数法会较好的解决了这个问题
边栏推荐
- SAP Analytics Cloud 和 SAP Cloud for Customer 两款 SaaS 软件的集成
- ClickHouse查询语句详解
- rpm文件解包提取 cpio
- 几款永久免费内网穿透,好用且简单_内网穿透平台
- cmd(命令行)操作或连接mysql数据库,以及创建数据库与表
- 集成学习、boosting、bagging、Adaboost、GBDT、随机森林
- Rabbit and Falcon are all covered, Go lang1.18 introductory and refined tutorial, from Bai Ding to Hongru, the whole platform (Sublime 4) Go lang development environment to build EP00
- go中select语句
- 决策树和随机森林
- Does setting the following sysctl settings require a system reboot?
猜你喜欢
MySql数据库索引优化
Flink Yarn Per Job - Submit application
Flink Yarn Per Job - 创建启动Dispatcher RM JobManager
删除文件夹时,报错“错误ox80070091:目录不是空的”,该如何解决?
STP普通生成树安全特性— bpduguard特性 + bpdufilter特性 + guard root 特性 III loopguard技术( 详解+配置)
基于百度AI和QT的景物识别系统
浅聊缓存函数
多媒体数据处理实验1:算术编码
深度学习之 10 卷积神经网络1
Rabbit and Falcon are all covered, Go lang1.18 introductory and refined tutorial, from Bai Ding to Hongru, the whole platform (Sublime 4) Go lang development environment to build EP00
随机推荐
使用GBase 8c数据库的时候,遇到这种报错“[[email protected] ~]$ /home/gbase/script/gha_ctl install -p……
系统io统计
MySQL——几种常见的嵌套查询
MySQL 免安装版的下载与配置教程
Flink Yarn Per Job - 提交应用
015-平衡二叉树(一)
如何优雅的消除系统重复代码
R语言ggplot2可视化数据点重合的散点图、数据点有重合、使用geom_smooth函数基于lm方法拟合数据点之间的趋势关系曲线、自定义数据点的大小、色彩、添加主标题、副标题、题注信息
Mysql OCP 28题
cnpm安装步骤
mysql数据库配置性能调优
浅聊缓存函数
PostgreSQL的架构
超详细的Asp.net使用SSL双向认证,一篇就够了
mysqldump导出提示:mysqldump [Warning] Using a password on the command line interface can be insecure
cass9.1快捷键怎么设置_cass9.1格式刷快捷键命令
使用 Scrapy 框架对重复的 url 无法获取数据,dont_filter=True
Scapy的介绍(一)「建议收藏」
013-Binary tree
报告:想学AI的学生数量已涨200%,老师都不够用了