有序选择L长度排列
http://acm.pku.edu.cn/JudgeOnline/problem?id=3049
参考别人代码写的:
#include<stdio.h>
int L, C;
char list[27], set[27];
void find(int i, int vovel, int ith)
{
if(ith == L)
{
if(vovel) printf("%s\n", set);
return ;
}
for(; i<=C-L+ith; i++)
{
set[ith] = list[i];
find(i+1, vovel+(set[ith] == 'a' || set[ith] == 'e' || set[ith] == 'i' || set[ith] == 'o' || set[ith] == 'u'), ith+1);
}
}
int main()
{
int i, k, arr[123];
char temp[2];
while(scanf("%d%d", &L, &C) != EOF)
{
for(i='a'; i<='z'; i++)
arr[i] = 0;
for(i=0; i<C; i++)
{
scanf("%s", temp);
arr[temp[0]] = 1;
}
for(i='a', k=0; i<='z'; i++)
if(arr[i])
list[k++] = i;
set[L] = 0;
find(0, 0, 0);
}
return 0;
}
/**************************************************************************
                 
原文来自博客园——Submarinex的博客: www.cnblogs.com/submarinex/               
 
*************************************************************************/

浙公网安备 33010602011771号