打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
有重复元素的排列问题

有重复元素的排列问题

Time Limit:10000MS  MemoryLimit:65536K
Total Submit:181 Accepted:87

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 行中的数是排列总数。

SampleInput

 

4aacc

 

SampleOutput

 

aaccacacaccacaaccacaccaa6
//code c++ vc6.0
#include <iostream>
#include <algorithm>
using   namespace std ;
long ans ;
int ok(char str[],int a ,int b )
{
        if( b > a)
         for(int i = a ; i< b ; i++)
                 if( str[i] == str[b] )
                         return 0 ;
         return 1 ;
}
void perm(char str[],int k ,int m)
{
         int i ;
         if( k == m )
         {
                 ans ++ ;
                 for( i = 0 ;i <= m ;i++ )
                 {
                         cout<<str[i];
                 }
                 cout<<endl;
         }
         else 
    for( i = k ; i <= m ;i++)
                 if( ok(str,k,i) )
                 {
                         swap ( str[k],str[i] );
                         perm(str, k+1 , m );
                         swap(str[k],str[i] ) ;
                 }
        
}
int main(int argc, char* argv[])
{
   char str[1000];
   int n , i ;
   cin>>n ;
    ans = 0 ;
    for( i = 0 ; i < n ;  i ++)
  cin>>str[i];
    perm(str,0,n-1) ;
    cout<<ans<<endl;
         return 0;
}
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
全排列(含递归和非递归的解法)
程序员面试攻略 5.3面试例题:第一个无重复字符
对一个字符数组的元素进行全排列
C学习心得
数组传参的问题
全排列算法集锦(转)
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服