HDU5198
来源:互联网 发布:cae仿真软件 编辑:程序博客网 时间:2024/06/08 18:45
题目链接:点击打开链接
本题写法很多,反而在写法上纠结了一会儿...快速找到简单的写法是关键。
小小分析一下。如果要输出YES,以下为必要条件
1.串长为3的整数倍
2.三个部分内的元素全部相同
3.每个部分的元素与其他的元素均不相同
以上条件任一不满足就输出NO
#include <iostream>#include <cstdio>#include <cstring>#include <vector>#include <algorithm>using namespace std;int nn,num;int main(){ char str[100]; int i; while(~scanf("%s",str)){ nn = 0; bool flag = true; int len = strlen(str); char tmp,a = 0,b = 0,c = 0; tmp = str[0]; a = tmp; for(i =0;i < len;i++){ if(tmp==str[i]){ nn++; } else { tmp = str[i]; b = tmp; break; } } if(nn*3!=len) flag = false; for(int k = i;i<k+nn;i++){ if(str[i]!=tmp){ flag = false; break; } } tmp = str[i]; if(tmp == a||tmp == b) flag = false; for(int k = i;i<k+nn;i++){ if(str[i]!=tmp){ flag = false; break; } } if(flag) printf("YES\n"); else printf("NO\n"); } return 0;}
0 0