找回密码
 加入
搜索
查看: 13017|回复: 30

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

 火... [复制链接]
发表于 2011-12-8 03:10:28 | 显示全部楼层 |阅读模式
本帖最后由 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两者的顺序

评分

参与人数 2金钱 +55 收起 理由
Duvet + 30
afan + 25

查看全部评分

发表于 2011-12-8 03:56:01 | 显示全部楼层
做梦算去……
发表于 2011-12-8 13:24:22 | 显示全部楼层
本帖最后由 afan 于 2011-12-8 13:26 编辑

游客,如果您要查看本帖隐藏内容请回复

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×

评分

参与人数 2金钱 +50 贡献 +5 收起 理由
Duvet + 30 + 5
happytc + 20

查看全部评分

发表于 2011-12-8 15:00:43 | 显示全部楼层
游客,如果您要查看本帖隐藏内容请回复

评分

参与人数 3金钱 +100 贡献 +10 收起 理由
Duvet + 30 + 5
happytc + 20
afan + 50 + 5

查看全部评分

发表于 2011-12-8 16:39:16 | 显示全部楼层
**** 本内容被作者隐藏 ****
3mile 发表于 2011-12-8 15:00



    比我想的还简单些,呵呵,学习了~
发表于 2011-12-8 19:18:19 | 显示全部楼层
先看看算法再说!
发表于 2011-12-8 19:40:41 | 显示全部楼层
本帖最后由 gto250 于 2011-12-8 19:45 编辑

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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2011-12-8 20:23:16 | 显示全部楼层
看看这题怎么解...好好学习,天天向上...
 楼主| 发表于 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[0]==c[0])
                if (IsCombined(a+1,b,c+1))
                                        return 1;
        if (b[0]==c[0])
                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) );
}

评分

参与人数 1金钱 +10 收起 理由
showshow + 10 同意!

查看全部评分

发表于 2011-12-8 22:21:55 | 显示全部楼层
同意楼上~~!
发表于 2011-12-8 22:31:37 | 显示全部楼层
过来学习下,
发表于 2011-12-8 23:10:28 | 显示全部楼层
学习一下 字数字数
发表于 2011-12-8 23:10:30 | 显示全部楼层
回复 9# happytc
問下,上面的 IsCombined(x,y,z2) 返回值會是 1(True) 嗎?
发表于 2011-12-9 00:02:17 | 显示全部楼层
学习学习学习
发表于 2011-12-9 04:38:52 | 显示全部楼层
想不出来啊,,,
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-5-16 03:56 , Processed in 0.085884 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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