POJ 3049(输出字母)

在一堆字母中找一段字母,使其中至少含有1个原音,2个辅音字母,且按字典序从小到大排列


果断搜


Program P3049;
var
   n,i,j,m:longint;
   a:array[1..26] of char;
   b:array['a'..'z'] of boolean;
   c:char;
procedure swap(var a,b:char);
var
   t:char;
begin
   t:=a;a:=b;b:=t;
end;
procedure dfs(father:longint;s:string;flag:boolean;l:longint);
var
   i:longint;
begin
   if l=n then
   begin
      if flag then writeln(s);
      exit;
   end;
   for i:=father+1 to m-(n-l)+1 do
      dfs(i,s+a[i],flag or b[a[i]],l+1);


end;
begin
   fillchar(b,sizeof(b),false);
   b['a']:=true;b['e']:=true;b['i']:=true;b['o']:=true;b['u']:=true;
   readln(n,m);
   for i:=1 to m do
   begin
      read(a[i]);
      read(c);
   end;
   for i:=1 to m-1 do
      for j:=i+1 to m do
         if ord(a[i])>ord(a[j]) then swap(a[i],a[j]);
   if n<3 then halt;
   dfs(0,'',false,0);


end.


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值