有重复元素的排列问题
Description
?设R={ r , r , , rn 1 2 可能相同。试设计?}是要进行排列的n个元素。其中元素n r , r , , r 1 2
一个算法,列出R的所有不同排列。
编程任务:
给定n 以及待排列的n 个元素。计算出这n 个元素的所有不同排列。
Input
输入数据的第1 行是元素个数n,1£n£500。接下来的1 行是待排列的n个元素。
Output
程序运行结束时,将计算出的n 个元素的所有不同排列输出,最后1 行中的数是排列总数。
Sample Input
4
aacc
Sample Output
aacc
acac
acca
caac
caca
ccaa
6
#include<iostream.h>
int ans=0;
void swap(char &a,char &b)
{
char s;
s=a;
a=b;
b=s;
}
bool f(char list[],int k,int i)
{
if(i>=k)
{
for(int t=k;t<i;t++)
if(list[t]==list[i])
return false;
return true;
}
}
void perm(char list[],int k,int m)
{
if(k==m)
{
ans++;
for(int i=0;i<=m;i++)
cout<<list[i];
cout<<endl;
}
else
{
for(int i=k;i<=m;i++)
if(f(list,k,i))
{
swap(list[k],list[i]);
perm(list,k+1,m);
swap(list[k],list[i]);
}
}
}
int main()
{
int n;
cin>>n;
char *a=new char [n+1];
for(int i=0;i<n;i++)
cin>>a[i];
perm(a,0,n-1);
cout<<ans<<endl;
delete []a;
return 0;
}
有重复元素的排列问题设R={ r , r , , rn 1 2 可能相同。试设计}是要进行排列的n个元素。其中元素n r...
4星 · 超过85%的资源 需积分: 50 158 浏览量
2009-03-11
14:53:01
上传
评论 5
收藏 936B RAR 举报
qinchaohan
- 粉丝: 12
- 资源: 41
最新资源
- 多机调度问题贪心算法:理论探索与实践应用.zip
- 探索tecreate:软件开发的未来之星.zip
- 打标机项目C#源码连接扫码
- 基于SSM的房屋租赁系统的设计与实现
- xyctf:从入门到精通的实用指南.zip
- mmqrcode1714153659780.png
- Screenshot_2024-04-27-06-08-58-486_com.baidu.xin.aiqicha.jpg
- 基于Javaweb+Tomcat+MySQL的大学生公寓管理系统+sql文件.zip
- 实训作业基于javaweb的订单管理系统源码+数据库+实训报告.zip
- 多机调度问题贪心算法基于最小堆和贪心算法求解多机调度问题.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈