现在的位置: 首页 > 综合 > 正文

ZOJ-2938

2014年04月05日 ⁄ 综合 ⁄ 共 643字 ⁄ 字号 评论关闭

暴力枚举下就行了,没有算法。。不过要细心点。。我开始的时候那while循环逻辑写错了,卡了半天,去找了测试数据才知道错哪了。。还是逻辑不够严密

#include<stdio.h>
#include<string.h>

int main()
{
    char s[41];
    while (gets(s), strcmp(s, "END") != 0)
    {
        int len = strlen(s);
        int ip, d;
        int maxcount = -1, maxlen = -1, maxip = -1, mind = 0xFFFFFFF;
        for (ip = 0; ip < len; ip++)
        {
            for (d = 1; d <= len - ip; d++)
            {
                int count = 0, length = ip;
                while (s[length] == '.')
                {
                    length += d;
                    count++;
                    if (length >= len)
                    {
                        length -= d;
                        break;
                    }
                }

                if (count > maxcount)
                {
                    maxcount = count;
                    maxip = ip;
                    mind = d;
                    maxlen = length;
                }
                else if (count == maxcount)
                {
                    if (length > maxlen)
                    {
                        maxip = ip;
                        mind = d;
                        maxlen = length;
                    }
                    else if (length == maxlen)
                    {
                        if (ip > maxip)
                        {
                            maxip = ip;
                            mind = d;
                        }
                        else if (ip == maxip)
                        {
                            if (d < mind)
                                mind = d;
                        }
                    }
                }
            }
        }
        printf("%d %d\n", maxip, mind);
    }
    return 0;
}
【上篇】
【下篇】

抱歉!评论已关闭.