有重复元素的排列问题
来源:互联网 发布:vs2015写c语言 编辑:程序博客网 时间:2024/06/07 10:18
有重复元素的排列问题
原题
有重复元素的排列问题(perm)
【问题描述】
设R={ r1, r2 , …, rn}是要进行排列的n个元素。其中元素r1, r2 , …, rn可能相同。试设计一个算法,列出R的所有不同排列。
【编程任务】
给定n 以及待排列的n 个元素。计算出这n 个元素的所有不同排列。
【输入格式】
由perm.in输入数据。文件的第1 行是元素个数n,1≤n≤500。接下来的1 行是待排列的n个元素。
【输出格式】
计算出的n个元素的所有不同排列输出到文件perm.out中。文件最后1行中的数是排列总数。
【输入样例】
4
aacc
【输出样例】多解
aacc
acac
acca
caac
caca
ccaa
6
算法分析
该题有三种做法
- 爆搜+判重(99%超时)
- dp排列组合
- STL(next_permutation)用法见此处
本人用的是第三种(当然是因为代码量少)
标程
#include <iostream>#include <algorithm>#include <string>#include <cstdio>using namespace std;int main(){ freopen("perm.in","r",stdin); freopen("perm.out","w",stdout); string str; cin >> str >> str; sort(str.begin(), str.end()); int num = 1; cout << str << endl; while (next_permutation(str.begin(), str.end())) // next_permutation不是最后一个排序返回true,否则返回false { cout << str << endl; num++; } cout << num << endl;/* Name: skyler2003 Date: 21/07/2017 19:29*/ fclose(stdin); fclose(stdout); return 0;}
阅读全文
0 0
- 8594 有重复元素的排列问题
- 8594 有重复元素的排列问题
- 有重复元素的排列问题
- 有重复元素的排列问题
- 有重复元素的排列问题
- 有重复元素的全排列问题
- 8594 有重复元素的排列问题
- 有重复元素的全排列问题
- 有重复元素的排列问题
- 有重复元素的排列问题
- 有重复元素的排列问题
- 【9501】有重复元素的排列问题
- 有重复元素的排列问题
- 有重复元素的排列问题
- 有重复元素的全排列问题
- 有重复元素的排列问题
- 有重复元素的排列问题
- 有重复元素的全排列问题
- Python 写3D花
- Python程序-2
- HDU4333[Revolving Digits]
- const、readonly及静态构造的用法
- 世界上没有怀才不遇这件事,关键是找准你的优势
- 有重复元素的排列问题
- Linux下动态库(.so)和静态库(.a)
- UVA1608Non-boringSquence
- Listview 里面的按钮点击 复用问题
- JSP上传图片源码
- caffe (11) 其他功能
- java集合框架
- Python的struct使用-解决socket的通讯限制了传输数据的长度
- elementUI图片上传之前对图片的宽高做限制。