CSU

来源:互联网 发布:ghost支持linux吗 编辑:程序博客网 时间:2024/05/01 00:29

Shining Gems

思路:简单模拟

#include <cstdio>#include <cstring>#include <map>#include <queue>#include <algorithm>using namespace std;#define M 1005#define INF 1<<29#define CLS(x,v)  memset(x,v,sizeof(x))#define filer  freopen("C:\\Users\\sq\\Desktop\\1.txt","r",stdin);bool isequal(char a,char b,char c){    return (a==b&&b==c);}int n,m;char s[M][M];int Comb(){    for(int i=0;i<n-2;i++)    for(int j=0;j<m;j++)     if(isequal(s[i][j],s[i+1][j],s[i+2][j]))        return 1;    for(int i=0;i<n;i++)    for(int j=0;j<m-2;j++)     if(isequal(s[i][j],s[i][j+1],s[i][j+2]))        return 1;    return 0;}int Enjoy_It(){    //竖直水平 各6+2种情况    for(int i=0;i<n-2;i++)    for(int j=0;j<m-1;j++)    {        if(isequal(s[i][j+1],s[i+1][j+1],s[i+2][j]))return 1;        if(isequal(s[i][j],s[i+1][j],s[i+2][j+1]))return 1;        if(isequal(s[i][j+1],s[i+1][j],s[i+2][j]))return 1;        if(isequal(s[i][j],s[i+1][j+1],s[i+2][j+1]))return 1;        if(isequal(s[i][j],s[i+1][j+1],s[i+2][j]))return 1;        if(isequal(s[i][j+1],s[i+1][j],s[i+2][j+1]))return 1;    }    for(int i=0;i<n-1;i++)    for(int j=0;j<m-2;j++)    {        if(isequal(s[i][j],s[i+1][j+1],s[i+1][j+2]))return 1;        if(isequal(s[i][j+2],s[i+1][j],s[i+1][j+1]))return 1;        if(isequal(s[i][j+1],s[i][j+2],s[i+1][j]))return 1;        if(isequal(s[i][j],s[i][j+1],s[i+1][j+2]))return 1;        if(isequal(s[i][j],s[i][j+2],s[i+1][j+1]))return 1;        if(isequal(s[i][j+1],s[i+1][j],s[i+1][j+2]))return 1;    }    for(int i=0;i<n-3;i++)    for(int j=0;j<m;j++)    {        if(isequal(s[i][j],s[i+1][j],s[i+3][j]))return 1;        if(isequal(s[i][j],s[i+2][j],s[i+3][j]))return 1;    }    for(int i=0;i<n;i++)    for(int j=0;j<m-3;j++)    {        if(isequal(s[i][j],s[i][j+1],s[i][j+3]))return 1;        if(isequal(s[i][j],s[i][j+2],s[i][j+3]))return 1;    }    return 0;}int  main(){    while(~scanf("%d%d",&n,&m))    {        for(int i=0;i<n;i++)        {            scanf("%s",s[i]);        }        if(Comb())puts("Combo");        else if(Enjoy_It())puts("Enjoy It");        else puts("Game Over");    }    return 0;}


printf 这道题很有意思,注意负数的情况!!

char *p;int input(){    int ret=0,flag=1;    while(*p<'0'||*p>'9')    {if(*p=='-')flag=-1; p++;}    while(*p>='0'&&*p<='9')    {        ret=ret*10+(*p-'0');        p++;    }    return flag*ret;}int main(){    int a[3],len;    char s[200];    int start, End;    while(gets(s))    {        len=strlen(s);        start=0;        // printf("->>%s\n",s);        for(int i=0; i<len; i++)            if(s[i]=='\"')            {                if(start==0)start=i+1;                else                {                    End=i;                    s[End]='\0';                    break;                }            }        p=s+End+1;        a[0]=input();        a[1]=input();        a[2]=input();        printf(s+start,a[0],a[1],a[2]);        printf("\n");    }    return 0;}



0 0
原创粉丝点击