雕刻时光

just do it……nothing impossible
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

枚举合法字符使之按字典序输出——pku3049

Posted on 2011-03-30 18:41  huhuuu  阅读(228)  评论(0编辑  收藏  举报
View Code
#include<stdio.h>
#include
<iostream>
#include
<algorithm>
using namespace std;

char a[29],b[29];

bool cmp(char a,char b)
{
return a>b;//大到小
//使abc为中a为最高位与all->1枚举相符
}

int main()
{
int n,t,i,j;
while(scanf("%d%d",&n,&t)!=EOF)
{
getchar();
scanf(
"%c",&a[0]);
for(i=1;i<t;i++)
{
scanf(
" %c",&a[i]);
}

sort(
&a[0],&a[t],cmp);

int all=1;
for(i=1;i<=t;i++)
all
*=2;

int add=0;
for(i=all;i>=1;i--)//大到小
{
add
=0;
bool rt=0;
int fadd=0;
for(j=0;j<t;j++)
{
if(i&(1<<j))
{
if(a[j]=='a'||a[j]=='e'||a[j]=='i'||a[j]=='o'||a[j]=='u')
rt
=1;
else
fadd
++;
b[add]
=a[j];
add
++;
}
}
if(add==n&&rt==1&&fadd>=2)
{
for(j=n-1;j>=0;j--)
printf(
"%c",b[j]);
printf(
"\n");
}
}
}
}