Code Forces 81 A. Plug-in 深搜||巧妙字符串处理
2013-11-11 20:09
323 查看
给出一个字符串,相同的字母对应相同的颜色,然后规则跟祖玛一样,只是2个颜色相同就可以消除,并且可以连锁
输出消除后最后剩下的字符串。
深搜,枚举每一个字符,然后
如果和后一个相同,
1 标记已经访问,
2 然后对左边最近一个没有被访问和(left)右边最近一个没有被访问的(right)进行深搜,
如果仍然可以消除则重复第2步骤。
中间处理的细节很多...比如left和right不越界,每次遇到不能消除的或者遇到了可以消除的都要更新left(下标不同),否则如果从str[x]==str[x+1]从left=x-1;暴搜回去TLE;
每次消除2个之后都要从left往左搜,搜一个没有访问过的
下面是看别人的思路然后写的...
利用了CF是每组实例都重新运行一次程序的特点
逐个字符读入,然后如果当前读入的(str[i])跟之前最近的一个相同,直接把下次访问的下标改成str[i-1](str[i]和str[i-1]消除了)否则i++...
so easy......
输出消除后最后剩下的字符串。
深搜,枚举每一个字符,然后
如果和后一个相同,
1 标记已经访问,
2 然后对左边最近一个没有被访问和(left)右边最近一个没有被访问的(right)进行深搜,
如果仍然可以消除则重复第2步骤。
中间处理的细节很多...比如left和right不越界,每次遇到不能消除的或者遇到了可以消除的都要更新left(下标不同),否则如果从str[x]==str[x+1]从left=x-1;暴搜回去TLE;
每次消除2个之后都要从left往左搜,搜一个没有访问过的
#include<stdio.h> #include<string.h> using namespace std; char str[211111]; int vis[211111]; int main(){ while(scanf("%s",&str)!=EOF){ memset(vis,0,sizeof(vis)); int left=0,right=0,len=strlen(str); for(int i=0;i<len-1;i++){ if(vis[i])continue; if(str[i]==str[i+1]){ vis[i]=vis[i+1]=1; right=i+2; while(left>=0&&vis[left]){ if(left-1>=0)left--; else break; } while(right<len&&left>=0&&(!vis[left])&&(!vis[right])&&str[left]==str[right]){ vis[left]=1,vis[right]=1; left--,right++; while(left>=0&&vis[left]){ if(left-1>=0)left--; else break; } } } else left=i; } for(int i=0;i<len;i++){ if(!vis[i])printf("%c",str[i]); } printf("\n"); } return 0; }
下面是看别人的思路然后写的...
利用了CF是每组实例都重新运行一次程序的特点
逐个字符读入,然后如果当前读入的(str[i])跟之前最近的一个相同,直接把下次访问的下标改成str[i-1](str[i]和str[i-1]消除了)否则i++...
so easy......
#include<stdio.h> int main(){ char str[1111111]; scanf("%c",&str[0]); int i=1; while(scanf("%c",&str[i])!=EOF){ if(str[i]==str[i-1])i=i-1; else i++; } str[i]='\0'; printf("%s\n",str); return 0; }
相关文章推荐
- SQL 中in传入字符串的处理
- python处理字符串时出现的错误'ascii' codec can't decode byte 0xe9 in position 0: ordinal not in range(128)" 解决方法
- 解决Python字符串处理出现错误UnicodeDecodeError: ‘ascii’ codec can’t decode byte 0xe4 in position 108: ordinal not in range(128)
- !MESSAGE Problems occurred when invoking code from plug-in: "org.eclipse.jface".问题处理
- 巧妙处理StringBuilder.AppendFormat 方法中字符串含有花括号“{}”
- uva 10340 All in All(字符串处理)
- oracle处理传入的是字符串的数字,通过传入的字符串数字执行IN操作
- python处理字符串时出现的错误'ascii' codec can't decode byte 0xe9 in position 0: ordinal not in range(128)" 解决方法
- 字符串特殊字符特殊处理方法:stringByTrimmingCharactersInSet
- 将textarea/Input里面带有‘换行符’或者空格的字符串处理成用','分隔的支持SQL的in()查询
- 【字符串处理】文明的复兴 words.pas/c/cpp/in/out
- UVA - 10340 All in All :简单字符串处理
- LeetCode 151 Reverse Words in a String (字符串处理 推荐)
- poj 1396 All in All 字符串处理,短小精悍的题目
- 关于Oracle存储过程中的IN子句传参的问题(不能直接传字符串,需要处理)
- 【字符串处理】文明的复兴 words.pas/c/cpp/in/out
- poj 1936 All in All (字符串处理)
- leetcode -- 434. Number of Segments in a String 【字符串处理】
- CF 81 A Plug-in
- 【PAT】A1006. Sign In and Sign Out(简单字符串处理)