當前位置:編程學習大全網 - 源碼下載 - 設R={r1,r2,..rn}是待排列的n個元素,其中{r1,r2,..rn}可能相同,設計壹個算法,列出R的所有不同排列。

設R={r1,r2,..rn}是待排列的n個元素,其中{r1,r2,..rn}可能相同,設計壹個算法,列出R的所有不同排列。

#include<iostream>

#include<stdio.h>

#include<string>

#include<cstring>

#include<algorithm>

using namespace std;

char a[1000];

char b[1000];

int main()

{

//freopen("perm.in","r",stdin);

//freopen("perm.out","w",stdout);

int n;

scanf("%d",&n);

scanf("%s",&a);

sort(a,a+n);

for(int i=0;i<n;i++)

{

b[n-i-1]=a[i];

}

/* for(int i=0;i<n;i++)

{

printf("%c",b[i]);

}

printf("\n");

*/

int t=1;

while(strcmp(a,b))

{

t++;

for(int i=0;i<n;i++)

{

printf("%c",a[i]);

}

printf("\n");

next_permutation(a,a+n);

}

for(int i=0;i<n;i++)

{

printf("%c",b[i]);

}

printf("\n");

printf("%d",t);

return 0;

}

/**************************************************************

Problem: 1201

User: charlot3

Language: C++

Result: 正確

Time:304 ms

Memory:1488 kb

****************************************************************/

  • 上一篇:ANDROID NDK開發求助
  • 下一篇:我的筆記本是聯想Y480。網絡上出現黃色感嘆號,幾乎百度了所有方法都沒有用。
  • copyright 2024編程學習大全網