happytc 发表于 2011-12-8 03:10:28

再给个简单点的问题:判断S3是否由S1和S2中的字符按原顺序组成

本帖最后由 happytc 于 2011-12-8 03:22 编辑

原问题链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=2401

我简单说明下就是:

判断字符串S3是否由字符串S1和字符串S2中的字符按原顺序组成,S1和S2可以混合,但顺序
不能乱,如下例:


      S1      S2      S3                        结论
-----------------------------------------------------------
(1) black   board   blackboard----------- 是
(2) black   board   boblaarcdk----------- 是
(3) black   board   boabdrlack----------- 不是
------------------------------------------------------------

其中S3一定是S1和S2里的字符组合而成,这里就是判断S3里的顺序是不是满足S1和S2两者的顺序

afan 发表于 2011-12-8 03:56:01

做梦算去……

afan 发表于 2011-12-8 13:24:22

本帖最后由 afan 于 2011-12-8 13:26 编辑

**** Hidden Message *****

3mile 发表于 2011-12-8 15:00:43

**** Hidden Message *****

afan 发表于 2011-12-8 16:39:16

**** 本内容被作者隐藏 ****
3mile 发表于 2011-12-8 15:00 http://www.autoitx.com/images/common/back.gif


    比我想的还简单些,呵呵,学习了~

gto250 发表于 2011-12-8 19:18:19

先看看算法再说!

gto250 发表于 2011-12-8 19:40:41

本帖最后由 gto250 于 2011-12-8 19:45 编辑

想了一个错误的答案,幸好自己发现了,不好意思!

bdancerlc 发表于 2011-12-8 20:23:16

看看这题怎么解...好好学习,天天向上...

happytc 发表于 2011-12-8 21:33:18

发个C递归解决这个问题的
另外,我建议学au3最好同时学学C语言一些基本的概念,不然深入一些的东西,象‘结构’,‘指针’等等在au3里出现时就不容易理解了
不用深入学C,只需要把象谭浩强的那本基本C语言书学完就可以了#include <string.h>
#include <stdio.h>

int IsCombined(char* a,char* b,char* c)
{
        if (strlen(a)+strlen(b) != strlen(c))
                return 0;

        if (strlen(c) == 0)
                return 1;
        if (strlen(a) == 0)
                return ( strcmp(b,c)==0 );
        if (strlen(b) == 0)
                return ( strcmp(a,c)==0 );

        if (a==c)
                if (IsCombined(a+1,b,c+1))
                                        return 1;
        if (b==c)
                if (IsCombined(a,b+1,c+1))
                        return 1;
        return 0;
}

int main()
{
        char x[]="black";
        char y[]="board";
        char z1[]="blackboard";
        char z2[]="boblaarcdk";
        char z3[]="boabdrlack";

        printf("%d %d %d",IsCombined(x,y,z1),IsCombined(x,y,z2),IsCombined(x,y,z3) );
}

showshow 发表于 2011-12-8 22:21:55

同意楼上~~!

零度深蓝 发表于 2011-12-8 22:31:37

过来学习下,

shano 发表于 2011-12-8 23:10:28

学习一下 字数字数

Duvet 发表于 2011-12-8 23:10:30

回复 9# happytc
問下,上面的 IsCombined(x,y,z2) 返回值會是 1(True) 嗎?

zldfsz 发表于 2011-12-9 00:02:17

学习学习学习

lixiaolong 发表于 2011-12-9 04:38:52

想不出来啊,,,
页: [1] 2 3
查看完整版本: 再给个简单点的问题:判断S3是否由S1和S2中的字符按原顺序组成