一:题目

计算给定的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容器做法思路加详解)相关推荐

  1. 7-2 旅行售货员 (10 分)(TSP问题思路加详解)

    一题目 某售货员要到若干城市去推销商品,已知各城市之间的路程(或旅费).他要选定一条从驻地出发,经过每个城市一遍,最后回到驻地的路线,使总的路程(或总旅费)最小. 输入格式: 第一行为城市数n 下面n ...

  2. 7-1 有重复元素的全排列 (10 分)

    7-1 有重复元素的全排列 (10 分) 计算给定的n个数有多少种排列方式,即求全排列(可能出现重复的元素) 输入格式: 第一行输入数字的数量n(n>2),第二行给出每一个数字. 输出格式: 一 ...

  3. 7-5 排列的字典序问题 (10 分)(思路加详解全排列问题+vector容器做法)Come Baby!

    一:题目 n个元素 {1,2, -,n} 有n!个不同的排列.将这 n! 个排列按字典序排列, 并编号为 0,1,-,n!-1 .每个排列的编号为其字典序值.例如,当n=3时,6个不同排列的字典序值如 ...

  4. 7-9 删数问题 (10 分)(思路加详解)

    一:题目 有一个长度为n(n <= 240)的正整数,从中取出k(k < n)个数,使剩余的数保持原来的次序不变,求这个正整数经过删数之后最小是多少. 输入格式: n和k 输出格式: 一个 ...

  5. 7-2 最长公共子序列 (10 分)(思路加详解)

    一:题目 给定两个长度分别为N和M的字符串A和B,求既是A的子序列又是B的子序列的字符串长度最长是多少. 输入格式: 第一行包含两个整数N和M.1≤N,M≤1000 第二行包含一个长度为N的字符串,表 ...

  6. 7-3 棋盘覆盖 (10 分)(思路加详解)Come baby

    一:题目: 输入格式: 输入三个数,分别是aa,bb,length. 输出格式: 输出整个棋盘.其中特殊方格填为0,然后铺棋盘的顺序为:先铺四个子棋盘交界的部分,然后递归的对每个子棋盘按照左上,右上, ...

  7. 【模板】 全排列 有重复元素的全排列

    全排列 #include<bits/stdc++.h> using namespace std; int pl[1001]; void print (int n){for(int i=1; ...

  8. 九章算法面试题54 带重复元素的全排列

    九章算法官网-原文网址 http://www.jiuzhang.com/problem/54/ 题目 给定一个带重复元素的整数集合,求出这个集合中所有元素的全排列.对于集合[1,1,2],其本质不同的 ...

  9. 算法学习——求有重复元素的全排列(递归)

    算法学习--求有重复元素的全排列(递归) 思路:看到这个题目首先能想到的一点就是:①我们要求元素的所有全排列②我们要对求出的全排列去重 第一步:求全排列,这里先讨论对不含重复元素的数组元素进行全排列, ...

最新文章

  1. LINUX环境下资源下载中文目录及中文文件名称问题
  2. 中山大学2020计算机学院复试分数线,2020中山大学研究生分数线汇总(含2016-2020历年复试)...
  3. PyQt5 技术篇-如何彻底删除控件?布局移除控件方法。
  4. NetBeans 7.4的本机Java打包
  5. 开发者批评苹果商店佣金过高,库克将面临立法者质疑;花呗接入央行征信;GitHub 发布更新| 极客头条
  6. hive replace_Hive新增字段(column)后,旧分区无法更新数据问题
  7. 网络安全:系统进程的基本概述
  8. dell服务器装不了无线网卡,DELL E6420无线网卡装不上去
  9. MySQL第七章之后的
  10. windows下 C++ openCV配置及x86编译(傻瓜式教程)
  11. Nginx静态资源服务器
  12. 深圳LED背光源模组十大生产厂家排名是什么呢
  13. 编程入门先学什么小白想入门看这里
  14. PCB:Beyond Part Models: Person Retrieval with Refined Part Pooling(论文阅读笔记)
  15. 何钦铭c语言第三版第3章答案,何钦铭版C语言第3章答案精选.pdf
  16. Google搜索引擎使用技巧大全
  17. pytest 之 fixture 夹具
  18. VS2017报错:E1696 命令行错误: 无法打开 元数据 文件 “platform.winmd”
  19. 【图像融合】小波变换彩色图像融合(带面板)【含GUI Matlab源码 782期】
  20. Moveit实际的机械臂控制(4)修改机械臂配置文件实现真实控制

热门文章

  1. [转]docker入门(利用docker部署web应用)
  2. Java之volatile如何保证可见性和指令重排序
  3. linux c之access方法介绍
  4. OSI七层模型的作用
  5. 栈和队列之仅用递归函数和栈操作逆序一个栈
  6. Android之Fragment 真正的完全解析(上)
  7. 北大青鸟s2结业考试机试_重庆北大青鸟「学员心声」任何一次的考试,都是一次珍贵的蜕变...
  8. java程序结构_java程序结构
  9. 微信功能“拍一拍”,都有谁在“拍”你?
  10. 高糊马赛克秒变高清,表情帝:这还是我吗?