POJ 1256(全排列——next_permutation)

POJ 1256(全排列——next_permutation)
这里有对全排列函数permutation的介绍 http://hi.baidu.com/sunshine_0316/blog/item/6f87a044bf30f320cffca381.html
#include < iostream >
#include
< map >
#include
< algorithm >

using   namespace  std;

typedef 
struct  node
{
    
char ch;
    
int flag;
}
node;

bool  cmp( const  node a, const  node b)
{
    
return a.flag<b.flag;
}


int  main()
{
    
int cas,i;
    
char str[15],ch;
    map
<char,int> mp;
    
for(ch='A',i=1;ch<='Z';ch++,i=i+2) mp[ch]=i;
    
for(ch='a',i=2;ch<='z';ch++,i=i+2) mp[ch]=i;
    scanf(
"%d",&cas);
    
while(cas--)
    
{
        scanf(
"%s",str);
        
int len=strlen(str);
        node p[
15];
        
for(i=0;i<len;i++)
        
{
            p[i].ch
=str[i];
            p[i].flag
=mp[str[i]];
        }

        sort(p,p
+len,cmp);
        
do
        
{
            
for(i=0;i<len;i++)
                printf(
"%c",p[i].ch);
            printf(
"\n");
        }
while(next_permutation(p,p+len,cmp));
    }

    
return 0;
}


你可能感兴趣的:(POJ 1256(全排列——next_permutation))