String 打印alpha范围的最有效方法?
我想做一个简单的程序:它得到两个字符串作为输入,并输出它们之间的所有内容。例如,对于输入“a”、“b”,输出为:String 打印alpha范围的最有效方法?,string,algorithm,String,Algorithm,我想做一个简单的程序:它得到两个字符串作为输入,并输出它们之间的所有内容。例如,对于输入“a”、“b”,输出为: a b a b c ... x y z aa ab ac ... ax ay az ba bb bc ... bx by bz ... za zb zc ... zx zy zz 对于输入'a','zz',输出为: a b a b c ... x y z aa ab ac ... ax ay az ba bb bc ... bx by bz ... za zb zc ... z
a b
a b c ... x y z aa ab ac ... ax ay az ba bb bc ... bx by bz ... za zb zc ... zx zy zz
对于输入'a','zz',输出为:
a b
a b c ... x y z aa ab ac ... ax ay az ba bb bc ... bx by bz ... za zb zc ... zx zy zz
最有效的方法是什么
----编辑----
以下是我的实现,首先使用递归:
void rec_print(int current)
{
if(current == max_len)
{
for(char c='a'; c<= 'z'; ++c)
{
global[current] = c;
printf("%s\n", global);
}
}
else
{
for(char c='a'; c<= 'z'; ++c)
{
global[current] = c;
rec_print(current+1);
}
}
}
void rec\u打印(当前整数)
{
如果(当前==最大值)
{
对于(char c='a';c,这应该是完整算法的丑陋版本:
void loop_print()
{
char *buffer;
int i;
char dst_buffer[5] = "00000";
for( int len=1; len<= 3; len++)
{
buffer = calloc(len+1, sizeof(char));
memset(buffer, 'a', len);
if(len == 1)
{
strcpy(dst_buffer, "z");
}
if ( len == 2)
{
strcpy(dst_buffer, "bc");
}
if(len == 3)
{
strcpy(dst_buffer, "abc");
}
// printf("buffer = %s\n", buffer);
// printf("dstbuf = %s\n", dst_buffer);
// system("pause");
do
{
i=len-1;
printf("%s\n", buffer);
while(i > -1 && buffer[i] == 'z')
{
buffer[i] = 'a';
i--;
}
buffer[i]++;
}
while (strcmp(buffer, dst_buffer) == -1);
printf("%s\n", buffer);
}
}
请展示您迄今为止的研究/调试工作。请先阅读第页。@SouravGhosh这是一个算法请求。。为什么投票失败?@SouravGhosh还添加了2个实现