数组分割

mostovoi1234 2008-09-06 05:22:22
寻找一个全有0或1组成且长度为N字符串并使得其中
 任意连续L0个字符中的0的个数不小于A0不大于B0,
 任意连续L1个字符中的1的个数不小于A1不大于B1。
若不存在这样的01串,则输出-1,否则输出其中一个串。
数据范围:N≤1000
...全文
143 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Larry316 2008-10-06
  • 打赏
  • 举报
回复
学习中!
shenyinyin00 2008-10-06
  • 打赏
  • 举报
回复
就是这样!
lu289196135 2008-10-01
  • 打赏
  • 举报
回复
算法思想:
先声明两个数组L0[],L1[]其中L0用来存放0串的,L1是用来存放1串的!
从串头开始一次遍历,如果第i次遇到0串则L0[i]++,如果第j次遇到1串则L1[j]++
然后再比较L0[],L1[]中的长度有没有满足题目要求的!
ai_3621 2008-10-01
  • 打赏
  • 举报
回复
似乎两次搜索就可以了吧。O(N).

第一次循环寻找:
 任意连续L0个字符中的0的个数不小于A0不大于B0,


int num = 数组S[N] 前L0个字符中的0的个数;

for(int i= lo,i <n, i++)
{

if(num A0不大于B0)
{
输出。
}

if(S[i]==S[i-lo])
{
continue;
}

if(S[i] == 1)
{
num --;
}
else
{
num++;
}

}



第二次循环寻找:
 任意连续L1个字符中的1的个数不小于A1不大于B1。

大体同上。
jakqigle 2008-10-01
  • 打赏
  • 举报
回复
先MARK下!不会了再来看高手的解答!
oo 2008-09-30
  • 打赏
  • 举报
回复
up

33,010

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧