再给个简单点的问题:判断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 13:26 编辑
**** Hidden Message ***** **** Hidden Message ***** **** 本内容被作者隐藏 ****
3mile 发表于 2011-12-8 15:00 http://www.autoitx.com/images/common/back.gif
比我想的还简单些,呵呵,学习了~ 先看看算法再说! 本帖最后由 gto250 于 2011-12-8 19:45 编辑
想了一个错误的答案,幸好自己发现了,不好意思! 看看这题怎么解...好好学习,天天向上... 发个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) );
} 同意楼上~~! 过来学习下, 学习一下 字数字数 回复 9# happytc
問下,上面的 IsCombined(x,y,z2) 返回值會是 1(True) 嗎? 学习学习学习 想不出来啊,,,