社区
数据结构与算法
帖子详情
由给定字符串生成新字符串
LouisJJW
2002-09-22 10:49:46
各位大哥,帮我看看这道题目,这道题目应该怎么做呢?
在任意给定的字符串(如'123')上,生成所有由该字符串上的字符组成,并且包含n个字符字符串,
要求:生成的字符串中不存在相同的两个相邻子字符串。
例如:
输入:字符串 '123' 整数 5
输出:字符串: '12321','21312'...
(不正确的子字符串如: '12323' ,因为有相邻子字符串'23' )
...全文
164
10
打赏
收藏
由给定字符串生成新字符串
各位大哥,帮我看看这道题目,这道题目应该怎么做呢? 在任意给定的字符串(如'123')上,生成所有由该字符串上的字符组成,并且包含n个字符字符串, 要求:生成的字符串中不存在相同的两个相邻子字符串。 例如: 输入:字符串 '123' 整数 5 输出:字符串: '12321','21312'... (不正确的子字符串如: '12323' ,因为有相邻子字符串'23' )
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
xdspower
2002-09-25
打赏
举报
回复
看来你是要求不要有“源串的子串”重复问题,这个是题目有歧义了,
这个就把最后的子串分离先在源串中进行,在再构建的串中搜索比较了,这个可能还真的不好办,
one_add_one
2002-09-24
打赏
举报
回复
int check[127][127];
是一个表,记录出现过的相邻的字符。。
然后递归搜索。把所有的情况搜一遍。。。打印出结果。。
xdspower
2002-09-23
打赏
举报
回复
输出所有可能的字符串吗?
‘123’:5
那不是有405种可能?相邻子字符串就只有‘11’‘22’‘33’‘1212’‘2323’五种共约296种可能错误排列
这个分析起来……想不出
建立一个相邻子字符串集合,再由给定字符串取出所有不同字符生成所有可能串,再查找匹配?
似乎太麻烦了吧…………
-----------------------
上面有错误,还有"1313","3131","2121","3232"等...
我觉得要注意的是生成所有由该字符串上的“字符”组成这个条件,这转换后就是先要在字符串中抽取出所有的字符,然后就是生成要求的字符串,然后就是子串的处理了,这时就要把生成的字符串中的所有子串(包括单个字符的子串)取出来进行条件检测,由于子检测有没有相邻,最大子串就是不超过总长的一半的字符串(考虑计算中会出现半个字符问题),然后比较同长邻串就可以判断了。
不过结果是比较多的!!!!!!
LouisJJW
2002-09-23
打赏
举报
回复
参考答案我有,关键是思路,或者能给程序加点注释说明一下吗?
我刚刚学,在看程序员的书,可是很多不明白!
先谢谢大家了!
howie
2002-09-23
打赏
举报
回复
to xdspower():
我觉得‘13’不是‘123’的子串,因为在‘123’中字符是有顺序的组成字符串,‘13’不能包括在‘123’的子串集里。字符串是一个sequence,而不仅仅是一个字符的set。
howie
2002-09-23
打赏
举报
回复
有一点想说一下,我觉得不是5位或者几位的问题,只要包含‘11’‘1212’的就是不正确的,因为‘1’是它的子串。还有,‘12123’应该也是不对的,‘1212’就是连续的两个子串。如果这些都算的话,对于五位的,似乎只有‘12323’和‘1233X’是错误的了,那情形就好判断多了。
我觉得如果只是要得到这样的串的话,大可以做一个表。
字符串a(0)……a(n),在生成的串中,字符a(i)之后为
a(0)—a(i)的时候才有可能出现相邻的子串,那满可以从a(i+1)以后的里面选一个,跟在a(i)后面,如此循环填加。
但这样得不到所有的可能串,只能有n!个
要得到所有的可能串,应该先得到所有可能相邻子串的组合,然后生成所有可能的目标串,再通过比照将所有含有相邻子串的组合的串删除,最后得到的就是了。
LouisJJW
2002-09-23
打赏
举报
回复
xdspower,谢谢你的关注,
你好象理解错了意思吧,如果输入'123' 5
那么题目意思是:生成的字符串是5位,你说的11’‘22’‘33’‘1212’‘2323’都不到5位,无位是指从'123'的字符中挑选字符,可以重复,生成的字符要是5个字符长,比如 12321,12123这些都是符合要求的,如果12323就不符合了,因为有了相同的相邻的子字符串“23”
这是程序员的书上的题目,我看了答案但是不太明白,请大家帮忙解释一下!
one_add_one
2002-09-22
打赏
举报
回复
#include <stdio.h>
#include <string.h>
int check[127][127];
char str[50];
char result[200];
int l;
search(int k){
int i;
if (k<=0){
printf("%s\n",result);
return;
}
for (i=0;i<strlen(str);i++){
if (k<l){
if (!check[result[l-k-1]][str[i]]){
check[result[l-k-1]][str[i]]=1;
result[l-k]=str[i];
search(k-1);
check[result[l-k-1]][str[i]]=0;
}
}
else{
result[l-k]=str[i];
search(k-1);
}
}
}
main(){
int i,j;
for (i=0;i<127;i++)
for (j=0;j<127;j++)
check[i][j]=0;
scanf("%s",str);
scanf("%d",&l);
result[l]='\0';
search(l);
}
howie
2002-09-22
打赏
举报
回复
输出所有可能的字符串吗?
‘123’:5
那不是有405种可能?相邻子字符串就只有‘11’‘22’‘33’‘1212’‘2323’五种共约296种可能错误排列
这个分析起来……想不出
建立一个相邻子字符串集合,再由给定字符串取出所有不同字符生成所有可能串,再查找匹配?
似乎太麻烦了吧…………
one_add_one
2002-09-22
打赏
举报
回复
搜索。。
输出亲朋
字符串
(
字符串
)
描述 编写程序,求
给定
字符串
s的亲朋
字符串
s1。 亲朋
字符串
s1定义如下:
给定
字符串
s的第一个字符的ASCII值加第二个字符的ASCII值,得到第一个亲朋字符;
给定
字符串
s的第二个字符的ASCII值加第三个字符的ASCII值,得到第二个亲朋字符;依此类推,直到
给定
字符串
s的倒数第二个字符。亲朋
字符串
的最后一个字符由
给定
字符串
s的最后一个字符ASCII值加s的第一个字符的ASCII值。...
问题 B: 输出亲朋
字符串
亲朋
字符串
s1定义如下:
给定
字符串
s的第一个字符的ASCII值加第二个字符的ASCII值,得到第一个亲朋字符;
给定
字符串
s的第二个字符的ASCII值加第三个字符的ASCII值,得到第二个亲朋字符;依此类推,直到
给定
字符串
s的倒数第二个字符。亲朋
字符串
的最后一个字符由
给定
字符串
s的最后一个字符ASCII值加s的第一个字符的ASCII值。输入一行,一个长度大于等于2,小于等于100的
字符串
。
字符串
中每个字符的ASCII值不大于63。输出一行,为变换后的亲朋
字符串
。编写程序,求
给定
字符串
s的亲朋
字符串
s1。
输出亲朋
字符串
描述 编写程序,求
给定
字符串
s的亲朋
字符串
s1。 亲朋
字符串
s1定义如下:
给定
字符串
s的第一个字符的ASCII值加第二个字符的ASCII值,得到第一个亲朋字符;
给定
字符串
s的第二个字符的ASCII值加第三个字符的ASCII值,得到第二个亲朋字符;依此类推,直到
给定
字符串
s的倒数第二个字符。亲朋
字符串
的最 后一个字符由
给定
字符串
s的最后一个字符ASCII值加s的第一个字符的ASCII值。 输入 输入一行,一个长度大于等于2,小于等于100的
字符串
。
字符串
中每个字符的ASCII值不大于63。 输出
给定
字符串
s和数字n,打印把
字符串
s向右移动n位的
新
字符串
给定
字符串
s和数字n,打印把
字符串
s向右移动n位的
新
字符串
输出亲朋
字符串
(C语言)
描述 编写程序,求
给定
字符串
s的亲朋
字符串
s1。 亲朋
字符串
s1定义如下:
给定
字符串
s的第一个字符的ASCII值加第二个字符的ASCII值,得到第一个亲朋字符;
给定
字符串
s的第二个字符的ASCII值加第三个字符的ASCII值,得到第二个亲朋字符;依此类推,直到
给定
字符串
s的倒数第二个字符。亲朋
字符串
的最 后一个字符由
给定
字符串
s的最后一个字符ASCII值加s的第一个字符的ASCII值。 输入 输入一行,一个长度大于等于2,小于等于100的
字符串
。
字符串
中每个字符的ASCII值不大于63。 输出 输出一
数据结构与算法
33,028
社区成员
35,336
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章