7-7 有重复元素的全排列 (10 分)(set容器做法思路加详解)
一:题目
计算给定的n个数有多少种排列方式,即求全排列(可能出现重复的元素)
输入格式:
第一行输入数字的数量n(n>2),第二行给出每一个数字。
输出格式:
一个数字,不同排列方式的数量。
输入样例:
3
1 2 2
结尾无空行
输出样例:
3
结尾无空行
二:思路
在全排列的基础上,我将输出的数据存放在set容器当中,这个容器有自动去重功能,故可以最后直接输出这个容器的大小即可;
三:上码
#include<bits/stdc++.h>
using namespace std;int N;
set<string>s;void swap(int A[],int i,int j){int temp = A[i];A[i] = A[j];A[j] = temp;
} string printarr(int arr[]){//将int类型的数据转换成string类型,实现字符串的拼接 stringstream st;for(int i = 0; i < N; i++){st << arr[i];}string str = st.str();return str;
}void perm(int A[],int p,int q){if(p == q){string str = printarr(A);s.insert(str);}else{for(int i = p; i <= q; i++){swap(A,p,i);perm(A,p+1,q);swap(A,p,i);}}
}int main(){cin >> N;int arr[10];//输入的单个的数字 for(int i = 0; i < N; i++){int nums;cin >> nums;arr[i] = nums;}perm(arr,0,N-1);cout << s.size();}
7-7 有重复元素的全排列 (10 分)(set容器做法思路加详解)相关推荐
- 7-2 旅行售货员 (10 分)(TSP问题思路加详解)
一题目 某售货员要到若干城市去推销商品,已知各城市之间的路程(或旅费).他要选定一条从驻地出发,经过每个城市一遍,最后回到驻地的路线,使总的路程(或总旅费)最小. 输入格式: 第一行为城市数n 下面n ...
- 7-1 有重复元素的全排列 (10 分)
7-1 有重复元素的全排列 (10 分) 计算给定的n个数有多少种排列方式,即求全排列(可能出现重复的元素) 输入格式: 第一行输入数字的数量n(n>2),第二行给出每一个数字. 输出格式: 一 ...
- 7-5 排列的字典序问题 (10 分)(思路加详解全排列问题+vector容器做法)Come Baby!
一:题目 n个元素 {1,2, -,n} 有n!个不同的排列.将这 n! 个排列按字典序排列, 并编号为 0,1,-,n!-1 .每个排列的编号为其字典序值.例如,当n=3时,6个不同排列的字典序值如 ...
- 7-9 删数问题 (10 分)(思路加详解)
一:题目 有一个长度为n(n <= 240)的正整数,从中取出k(k < n)个数,使剩余的数保持原来的次序不变,求这个正整数经过删数之后最小是多少. 输入格式: n和k 输出格式: 一个 ...
- 7-2 最长公共子序列 (10 分)(思路加详解)
一:题目 给定两个长度分别为N和M的字符串A和B,求既是A的子序列又是B的子序列的字符串长度最长是多少. 输入格式: 第一行包含两个整数N和M.1≤N,M≤1000 第二行包含一个长度为N的字符串,表 ...
- 7-3 棋盘覆盖 (10 分)(思路加详解)Come baby
一:题目: 输入格式: 输入三个数,分别是aa,bb,length. 输出格式: 输出整个棋盘.其中特殊方格填为0,然后铺棋盘的顺序为:先铺四个子棋盘交界的部分,然后递归的对每个子棋盘按照左上,右上, ...
- 【模板】 全排列 有重复元素的全排列
全排列 #include<bits/stdc++.h> using namespace std; int pl[1001]; void print (int n){for(int i=1; ...
- 九章算法面试题54 带重复元素的全排列
九章算法官网-原文网址 http://www.jiuzhang.com/problem/54/ 题目 给定一个带重复元素的整数集合,求出这个集合中所有元素的全排列.对于集合[1,1,2],其本质不同的 ...
- 算法学习——求有重复元素的全排列(递归)
算法学习--求有重复元素的全排列(递归) 思路:看到这个题目首先能想到的一点就是:①我们要求元素的所有全排列②我们要对求出的全排列去重 第一步:求全排列,这里先讨论对不含重复元素的数组元素进行全排列, ...
最新文章
- LINUX环境下资源下载中文目录及中文文件名称问题
- 中山大学2020计算机学院复试分数线,2020中山大学研究生分数线汇总(含2016-2020历年复试)...
- PyQt5 技术篇-如何彻底删除控件?布局移除控件方法。
- NetBeans 7.4的本机Java打包
- 开发者批评苹果商店佣金过高,库克将面临立法者质疑;花呗接入央行征信;GitHub 发布更新| 极客头条
- hive replace_Hive新增字段(column)后,旧分区无法更新数据问题
- 网络安全:系统进程的基本概述
- dell服务器装不了无线网卡,DELL E6420无线网卡装不上去
- MySQL第七章之后的
- windows下 C++ openCV配置及x86编译(傻瓜式教程)
- Nginx静态资源服务器
- 深圳LED背光源模组十大生产厂家排名是什么呢
- 编程入门先学什么小白想入门看这里
- PCB:Beyond Part Models: Person Retrieval with Refined Part Pooling(论文阅读笔记)
- 何钦铭c语言第三版第3章答案,何钦铭版C语言第3章答案精选.pdf
- Google搜索引擎使用技巧大全
- pytest 之 fixture 夹具
- VS2017报错:E1696 命令行错误: 无法打开 元数据 文件 “platform.winmd”
- 【图像融合】小波变换彩色图像融合(带面板)【含GUI Matlab源码 782期】
- Moveit实际的机械臂控制(4)修改机械臂配置文件实现真实控制
热门文章
- [转]docker入门(利用docker部署web应用)
- Java之volatile如何保证可见性和指令重排序
- linux c之access方法介绍
- OSI七层模型的作用
- 栈和队列之仅用递归函数和栈操作逆序一个栈
- Android之Fragment 真正的完全解析(上)
- 北大青鸟s2结业考试机试_重庆北大青鸟「学员心声」任何一次的考试,都是一次珍贵的蜕变...
- java程序结构_java程序结构
- 微信功能“拍一拍”,都有谁在“拍”你?
- 高糊马赛克秒变高清,表情帝:这还是我吗?