0031-讨厌的青蛙

问题描述

在韩国,有一种小的青蛙。每到晚上,这种青蛙会跳越稻田,从而踩踏稻子。农民在早上看到被踩踏的稻子,希望找到造成最大损害的那只青蛙经过的路径。 每只青蛙总是沿着一条直线跳越稻田,而且每次跳跃的距离都相同,如图 1所示。 稻田里的稻子组成一个栅格,每棵稻子位于一个格点上,如图2 所示。而青蛙总是从稻田的一侧跳进稻田,然后沿着某条直线穿越稻田,从另一侧跳出去,如图 3 所示。 青蛙的每一跳都恰好踩在一棵水稻上, 将这棵水稻拍倒。可能会有多只青蛙从稻田穿越,有些水稻被多只青蛙踩踏,如图4 所示。当然,农民所见到的是图 5 中的情形,看不到图 4 中的直线。 根据图 5,农民能够构造出青蛙穿越稻田时的行走路径,并且只关心那些在穿越稻田时至少踩踏了 3 棵水稻的青蛙。因此,每条青蛙行走路径上至少包括 3 棵被踩踏的水稻。而在一条青蛙行走路径的直线上,也可能会有些被踩踏的水稻不属于该行走路径。 在图 5 中,格点(2, 1)、(6, 1)上的水稻可能是同一只青蛙踩踏的,但这条线上只有两棵被踩踏的水稻,因此不能作为一条青蛙行走路径;格点(2, 3)、(3, 4)、(6, 6)在同一条直线上,但它们的间距不等,因此不能作为一条青蛙行走路径;格点(2, 1)、(2, 3)、(2, 5)、(2, 7)是一条青蛙行走路径,该路径不包括格点(2, 6)。请你写一个程序,确定在所有的青蛙行路径中,踩踏水稻棵数最多的路径上有多少棵水稻被踩踏。例如,图5 的答案是 7,因为第 6 行上全部水稻恰好构成一条青蛙行走路径。

讨厌的青蛙

输入

从标准输入设备上读入数据。第一行上两个整数 R、C,分别表示稻田中水稻的行数和列数,1≤R、C≤5000。第二行是一个整数 N,表示被踩踏的水稻数量, ≤N≤5000。在剩下的 N 行中,每行有两个整数,分别是一颗被踩踏水稻的行号(1R)和列号(1C),两个整数用一个空格隔开。而且,每棵被踩踏水稻只被列出一次。

输出

从标准输出设备上输出一个整数。如果在稻田中存在青蛙行走路径,则输出包含最多水稻的青蛙行走路径中的水稻数量,否则输出 0。

输入样列

6 7
14
2 1
6 6
4 2
2 5
2 6
2 7
3 4
6 1
6 2
2 3
6 3
6 4
6 5
6 7

输出样例

7

算法实现

using System;

namespace Questions{
    class Program{
        public static void Main(string[] args){
            string input = Console.ReadLine();
            string[] data = input.Split(' ');
            int r = int.Parse(data[0]);
            int c = int.Parse(data[1]);
            int n = int.Parse(Console.ReadLine());
            int[,] num = new int[n, 2];

            for (int i = 0; i < n; i++)
            {
                input = Console.ReadLine();
                data = input.Split(' ');
                num[i, 0] = int.Parse(data[0]);
                num[i, 1] = int.Parse(data[1]);
            }
            Sort(ref num);
            int max = 0;
            for (int i = 0; i < n; i++)
            {
                for (int j = i + 1; j < n; j++)
                {
                    int temp = 0;
                    int dx = num[j, 0] - num[i, 0];
                    int dy = num[j, 1] - num[i, 1];
                    temp++;
                    int x = num[i, 0];
                    int y = num[i, 1];
                    while (true)
                    {
                        if (x - dx > 0 && y - dy > 0 && x - dx <= r && y - dy <= c)
                        {
                            temp++;
                            x -= dx;
                            y -= dy;
                        }
                        else
                            break;
                    }
                    temp++;
                    x = num[j, 0];
                    y = num[j, 1];
                    while (true)
                    {
                        if (x + dx <= r && y + dy <= c && x + dx > 0 && y + dy > 0)
                        {
                            temp++;
                            x += dx;
                            y += dy;
                        }
                        else
                            break;
                    }
                    max = max > temp ? max : temp;
                }
            }
            Console.WriteLine(max);
            Console.ReadKey();
        }

        public static void Sort(ref int[,] sort)
        {
            for (int i = 0; i < sort.GetLength(0) - 1; i++)
            {
                for (int j = 0; j < sort.GetLength(0) - 1 - i; j++)
                {
                    if (sort[j, 0] > sort[j + 1, 0] || (sort[j, 0] == sort[j + 1, 0] && sort[j, 1] > sort[j + 1, 1]))
                    {
                        int temp = sort[j, 0];
                        sort[j, 0] = sort[j + 1, 0];
                        sort[j + 1, 0] = temp;
                        temp = sort[j, 1];
                        sort[j, 1] = sort[j + 1, 1];
                        sort[j + 1, 1] = temp;
                    }
                }
            }
        }
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,440评论 5 467
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,814评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,427评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,710评论 1 270
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,625评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,014评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,511评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,162评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,311评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,262评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,278评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,989评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,583评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,664评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,904评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,274评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,856评论 2 339

推荐阅读更多精彩内容

  • 呜呼,百年沣水稻田将不见,临之凭吊飨祖先! 九月间的一个平常的午后;平常如每一个历史上九月的午后。阴晴参半的天气。...
    沣水寒江雪阅读 1,092评论 5 12
  • 夏末秋初,稻田 农历七月十五中元节前后,大诗兄去东瀛日本游历了一番。 当我坐在价值上亿的豪车里,车辆飞驰,我望着窗...
    大诗兄阅读 1,295评论 1 2
  • “这次怎么没骂啊”我看着傻逼有点不解。“扯淡”他居然摔门出去练双杠了。 “傻逼”,姓名不详。和我从军校滚了三年又分...
    物喜己悲最伤人阅读 1,072评论 0 1
  • 阅读:130-174 更多的了解了莫奈的不同画作和不同时期的作品,与年代和历史事件交织。比如莫奈的第二个爱人爱丽丝...
    冰洛洛阅读 84评论 0 0
  • 今天限号、停车费像抢钱、就是懒的不想开车、刚好有张优惠券bulabulabula……有一堆理由让我出门之前打开手机...
    禚三公子阅读 1,136评论 12 6