最长01串(贪心)
来源:互联网 发布:快感增强液 知乎 编辑:程序博客网 时间:2024/06/06 15:43
一行一个整数,最长的0与1的个数相等的子串的长度。
101111111010
示例输出
204
思路:统计0与1的个数在串里相同且最大长度。可以见0就让ans--,1就++,当值为0的时候就比较一下当前的ma与i+1的大小
,但是有个问题就是当为000000000001111111111111(0的个数=1的个数)时会输出0,而不是20(假设1==0 位20个)。
#include<iostream>#include<algorithm>#include<cstdio>#include<cstring>#include<cmath>#include<math.h>#include<queue>#define inf 1000010+10using namespace std;char s[inf];int dp[2*inf];int main(){ int n,m,i,j,k,ma; while(~scanf("%s",s)) { int ans=0,ma=0; memset(dp,-1,sizeof(dp)); dp[inf]=0;//设置一个中间值,使得当如1010,或000111类似的加和为1,直接用当前的位置减去0即可. for(i=0;s[i]!='\0';i++) { if(s[i]=='1') ans++; else if(s[i]=='0') ans--; if(dp[ans+inf]==-1)//自-的越多拥有的dp值越大, dp[ans+inf]=i+1; else ma=max(ma,i+1-dp[ans+inf]);//当再相加的时候,dp下标值越小相应的-的值也越小,获得的值越大 } printf("%d\n",ma); } return 0;}<span id="transmark"></span>
1 0
- 最长01串(贪心)
- 福建第六届省赛 最长连续串(贪心)
- 最长01串
- 最长01子串
- 阿尔卡特2013年实习生招聘笔试题 最长不重复子串 贪心算法
- 贪心法应用:不含重复字符的最长子串
- hdu 5773 贪心+最长上升子序列
- 最长01串(OJ--3308
- 最长01串 SDUT 3308
- poj3903--Stock Exchange--nlogn贪心求最长上升子序列
- HDU 1257(贪心;动态规划(最长上升子序列))
- hdu 1003 最大最长上升子序列 贪心
- 最少拦截系统-贪心或最长上升子序列
- 51node1091 线段的最长交集(贪心)
- nyoj 单调递增最长子序列(贪心||DP)
- hdu5773 The All-purpose Zero 贪心+最长上升子序列
- ZOJ2319 Beautiful People(贪心,最长递增子序列nlogn,LIS)
- 贪心算法之——最长上升子序列
- 字符串运算符
- 3-1、topk代码
- MySQL 触发器使用
- 京东面试题
- OC自动释放池在for循环中的性能测试
- 最长01串(贪心)
- Java 时间(日期)相加处理
- WPF 学习资源汇总
- 操作Json和Json数组的一些基本方法
- 给树莓派系统增加看门狗
- codeBlocks创建新的c语言项目
- 明天上课了!!!
- 对NSDictionary的遍历
- 关于敏捷开发的26个心得