找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 339|回复: 0

求助一个递归问题:输入两个字符串,比如abdbcc和abc,输出第二个字符串在第一个字符串中的连接次序。

[复制链接]

1

主题

3

回帖

0

积分

新手上路

积分
0
发表于 2013-7-24 11:23:54 | 显示全部楼层 |阅读模式
题目:
输入两个字符串,比如abdbcc和abc,输出第二个字符串在第一个字符串中的连接次序。即输出125、126、145、146.
网上搜到很多代码,下面这个比较简练,但是看了好久还是没看懂,求大神指点一下思路或者给出自己的解法,我比较菜,网上搜到的代码注释不详,理解比较困难。


#include<stdio.h>
#include<stdlib.h>
#include<string.h>

void display(const char *buf, const char *sub, const int len, int tab[], int depth, int distance)
{
    int i;

    if (len == depth)
    {
        for (i = 0; i < len; ++i)
        {
            printf("%d", tab);
        }
        printf("\n");
    }
    else
    {
        while (*buf)
        {
            if (*buf == *sub)
            {
                tab[depth] = distance + 1;
                display(buf + 1, sub + 1, len, tab, depth + 1, distance + 1);
            }

            ++distance;
            ++buf;
        }
    }
}

int main()
{
    int tab[100];
    const char *buf = "abdbcc";
    const char *sub = "abc";

    display(buf, sub, strlen(sub), tab, 0, 0);

    system("pause");
    return 0;
}


您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

果子博客
扫码关注微信公众号

Archiver|手机版|小黑屋|风叶林

GMT+8, 2026-2-1 04:42 , Processed in 0.074579 second(s), 20 queries .

Powered by 风叶林

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表