算法求助,很难的算法。高手进

popcom 2009-12-23 09:26:20
如下数组:
a b c ...
d e ..
f..
g h ..
...

长度都是不确定的。
需要形成
adfg, adfh, aefg, aefh, bdfg,bdfh....等字符

暨全部遍历的字符串。
...全文
372 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
qingfengbannixing 2009-12-30
  • 打赏
  • 举报
回复
学习下,用循环,递归都可以吧
musiclee 2009-12-29
  • 打赏
  • 举报
回复
do_fork
今天正好学习了linux 看到你名字好熟悉啊
  • 打赏
  • 举报
回复
呃。。。。看来已经解决了啊!
popcom 2009-12-29
  • 打赏
  • 举报
回复
do_fork

运行了你的算法好像有问题,能帮忙在看一下吗?
sduxiaoxiang 2009-12-23
  • 打赏
  • 举报
回复
这个算法不叫难吧
do_fork 2009-12-23
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 programmerno1 的回复:]
引用 6 楼 do_fork 的回复:
C/C++ code#include <stdio.h>void p(char**s,int n)
{int sk[100], t=0, i;while (t>=0) {if (t== n) {for (i=0; i <n; i++)
                                putchar(s[i][sk[i]]);
                        putcha?-


不对吧,兄弟
[/Quote]
改成char *s[]={"abc", "de", "f", "gh"};

输出
adfg
adfh
aefg
aefh
bdfg
bdfh
befg
befh
cdfg
cdfh
cefg
cefh
ProgrammerNO1 2009-12-23
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 do_fork 的回复:]
C/C++ code#include<stdio.h>void p(char**s,int n)
{int sk[100], t=0, i;while (t>=0) {if (t== n) {for (i=0; i<n; i++)
putchar(s[i][sk[i]]);
putcha?-
[/Quote]

不对吧,兄弟
bladesoft 2009-12-23
  • 打赏
  • 举报
回复
看到1楼的递归算法我很有感触,为什么每次能读懂别人的递归,但是自己遇到问题的时候就不会用递归呢?
do_fork 2009-12-23
  • 打赏
  • 举报
回复
#include <stdio.h>

void p(char **s, int n)
{
int sk[100], t=0, i;
while (t >= 0) {
if (t == n) {
for (i=0; i<n; i++)
putchar(s[i][sk[i]]);
putchar('\n');
t--;
while (t>=0 && !s[t][sk[t]+1])
t--;
if (t>=0)
sk[t++]++;
} else
sk[t++]=0;
}
}

int main()
{
char *s[]={"ab", "cd", "gh"};
p(s, 3);
}
popcom 2009-12-23
  • 打赏
  • 举报
回复
递归算法,如果维数多的话,有可能会导致栈溢出的。
还有没有其他的算法
z569362161 2009-12-23
  • 打赏
  • 举报
回复
算法求助,很难的算法。高手进

不要在发这样的标题了,让人笑啊!
苍蝇①号 2009-12-23
  • 打赏
  • 举报
回复
#include <stdio.h>

char *array[] = {"ab","1","24","3",NULL};
char stack[1000];
char top = -1;

void print_array(char **array){
char *curr = *array;
if(curr == NULL){
printf("%s\n",stack);
return;
}
top++;
while(*curr){
/*printf("%c",*curr);*/
stack[top] = *curr;
print_array(array+1);
stack[top] = '\0';
curr++;

}
top--;

}


int main(){
print_array(array);
getch();
return 0;
}
jixingzhong 2009-12-23
  • 打赏
  • 举报
回复
循环也可
baihacker 2009-12-23
  • 打赏
  • 举报
回复
#include <stdio.h>
char* str[] =
{
"abc", "de", "f", "gh"
};

void show(char* result, int curr)
{
if (curr == 4) puts(result);
else
{
int i;
for (i = 0; str[curr][i]; ++i)
{
result[curr] = str[curr][i];
show(result, curr+1);
}
}
}
int main()
{
char result[16] = {0};
show(result, 0);
return 0;
}

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧