fjnu 1302 全排序问题

来源:互联网 发布:淘宝视频短片拍摄方案 编辑:程序博客网 时间:2024/05/29 14:37

Description

将一个字符组全排序

Input

一个长度小于10的字符串,该字符串由数字1~9组成。字符不会重复出现。

Output

按数字在输入串中出现的次序从小到大的顺序输出该字符组的全排序

Sample Input

132

Sample Output

1 3 21 2 33 1 23 2 12 1 32 3 1

 KEY:本来是递归算法的经典问题,我怎么也搞不对,最后不行了……用STL……AC

 

Source:

#include
<iostream>
#include
<algorithm>
using namespace std;
int num[11];

bool compare(char a,char b)
{
    
return num[a-'0']>num[b-'0'];
}


int main()
{
    
char str[10];
    
int n,i;
    cin
>>str;
    n
=strlen(str);
    
for(i=0;i<n;i++)
        num[(str[i]
-'0')]=10-i;
    sort(str,str
+n,compare);
    
do
    
{
        
for(i=0;i<n-1;i++)
            cout
<<str[i]<<" ";
        cout
<<str[n-1]<<endl;
    }
while(next_permutation(str,str+n,compare));
    
return 0;
}


 
原创粉丝点击