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
原创粉丝点击