| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2697 人关注过本帖, 1 人收藏
标题:一道C语言题
只看楼主 加入收藏
小李探花
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2016-12-17
结帖率:0
收藏(1)
已结贴  问题点数:20 回复次数:35 
一道C语言题
给定一个字符串"S"和整数L和M,我们认为字符串"S"存在"可回收"子串,这个子串必须当且仅当满足以下条件
(i)它的长度是M*L;

(ii)可以通过M个长度为L的"多元子串"子串来构造;
如果两个子字符串每个位置的字符都不一样,那么这两个子字符串可以当作为"多元子串"
如果从字符串"S"的不同位置里截取两段字符串,那么这两个子串是"不同的",例如,字符串"AA"有3个不同的子串"AA"、"A"和"A"。

你的任务是计算出不同的"可回收"子串

输入格式
第一行,要用空格符分开整数M和L
第二行,要有一个全小写字符串S,并且要长度要大于 M * L ,要小于10^5。且1 ≤ M * L;

输入例子
3 3
abccabcac
搜索更多相关主题的帖子: C语言 字符串 回收 
2016-12-17 23:22
小李探花
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2016-12-17
收藏
得分:0 
变相求子串的题,哪位帮个忙啊
2016-12-17 23:23
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:4 
我的理解,是不是这题和字符串里面的字符ASCII码没关,只和子串的位置有关M和L确定了,那么子串就确定了???

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2016-12-17 23:36
小李探花
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2016-12-17
收藏
得分:0 
回复 3楼 九转星河
应该是的
2016-12-17 23:56
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
这其实就是个多选二问题,只不过选择长度有个限制罢了~多选二的组合数有  n*(n-1)/2种~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2016-12-18 00:04
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
对哦,不一定是两个,可以是由三个甚至是更多的子串构成~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2016-12-18 00:08
小李探花
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2016-12-17
收藏
得分:0 
回复 6楼 九转星河
版主能帮忙敲个源代码出来试试吗
2016-12-18 00:10
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
回复 7楼 小李探花
我的理解能力有限,我现在都没有读懂题目~不是把一个字符串分割成长度为L的多元子串吗~我的理解是--只有一种分割方法啊,但感觉这样简单了点,何必兜这么大圈子呢~因此我觉得自己还没读懂题意~也许很简单,也也许会很难~能说个具体实例吗

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2016-12-18 00:21
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
你先试一下写个abcdef子串长度为3的样例看看~然后我再理解一下~不然我真不好下手

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2016-12-18 00:24
小李探花
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2016-12-17
收藏
得分:0 
回复 9楼 九转星河
之前一朋友帮我写过,不过我这里只有可执行文件跟一点点残代码。我用可执行文件运行了一下,截了个图,版主看看。
图片附件: 游客没有浏览图片的权限,请 登录注册


如图,题目所谓的“可回收子串”,首先长度要是你输入的L*M,比如图中是2*3=6,但是你输入的字符串S长度要大于L*M,比如图中我输入了9个。那么有人会问为什么满足条件的可回收子串只有图中的两个,“cabbac”为什么不是,之所以不是是因为题目中还规定了“可回收子串”必须能由M个长度为L的“多元子串”来构造,而题目中规定“多元子串”的子字符串每个位置的字符都不一样,所以“cabbac”可以拆成“cab”“bac”这两个子串,但是这两个子串第二个位置都是a,所以“cabbac”不是字符串“S”的“可回收子串”。版主看完了我说的之后能帮忙敲出源代码么,我虽然理解了但是感觉敲出来还是费劲
2016-12-18 01:02
快速回复:一道C语言题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.025646 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved