爱奇艺笔试题——草原坝上滑梯

2、Description
Michael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激。可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你。Michael想知道载一个区域中最长底滑坡。区域由一个二维数组给出。数组的每个数字代表点的高度。下面是一个例子 
 1  2  3  4 5

16 17 18 19 6

15 24 25 20 7

14 23 22 21 8

13 12 11 10 9

一个人可以从某个点滑向上下左右相邻四个点之一,当且仅当高度减小。在上面的例子中,一条可滑行的滑坡为24-17-16-1。当然25-24-23-...-3-2-1更长。事实上,这是最长的一条。

Input

输入的第一行表示区域的行数R和列数C(1 <= R,C <= 100)。下面是R行,每行有C个整数,代表高度h,0<=h<=10000。

Output

输出最长区域的长度。

Sample Input

5 5
1 2 3 4 5
16 17 18 19 6
15 24 25 20 7
14 23 22 21 8
13 12 11 10 9

Sample Output

25
#include <iostream>
#include <algorithm>

using namespace std;

int r;//行
int c;//列
int a[1000][100];//输入矩阵
int result[1000][1000];//输出矩阵

//递归思想:分别求出上下左右方向的最大长度
int maxLength(int  i, int j)
{
	int left = j - 1;
	int right = j + 1;
	int high = i - 1;
	int low = i + 1;

	int left_value;
	int right_value;
	int high_value;
	int low_value;

	//左侧最大长度
	if (left >= 0 && a[i][left] < a[i][j])
		left_value = maxLength(i, left) + 1;
	else
		left_value = 0;

	//右侧最大长度
	if (right <= c - 1 && a[i][right] < a[i][j])
		right_value = maxLength(i, right) + 1;
	else
		right_value = 0;

	//上侧最大长度
	if (high >= 0 && a[high][j] < a[i][j])
		high_value = maxLength(high, j) + 1;
	else
		high_value = 0;

	//下侧最大长度
	if (low <= r - 1 && a[low][j] < a[i][j])
		low_value = maxLength(low, j) + 1;
	else
		low_value = 0;

	int max1 = max(high_value, low_value);
	int max2 = max(left_value, right_value);
	return max(max1, max2);
}

int main()
{
	while (cin >> r >> c)
	{
		//初始化矩阵
		for (int i = 0; i < r; i++)
			for (int j = 0; j < c; j++)
				cin >> a[i][j];
		//计算每一个位置的最大长度
		for (int i = 0; i < r; i++)
			for (int j = 0; j < c; j++)
				result[i][j] = maxLength(i, j);
		//寻找所有位置中最大的长度
		int maxLen = 0;
		for (int i = 0; i < r; i++)
		{
			for (int j = 0; j < c; j++)
				if (result[i][j] > maxLen)
					maxLen = result[i][j];
		}
		cout << maxLen + 1 << endl;
	}
	
	system("pause");
	return 0;
} 


全部评论
POJ原题,他们可真省事。http://poj.org/problem?id=1088
点赞 回复 分享
发布于 2016-08-28 23:34
跟我的差不多,不过我还没调试完就交卷了555
点赞 回复 分享
发布于 2016-08-29 08:51
大兄弟,你这个效率不行啊。不超时么
点赞 回复 分享
发布于 2016-08-29 08:06
DP吧 虽然没写出来2333
点赞 回复 分享
发布于 2016-08-28 23:27
愣是没看懂题目。。
点赞 回复 分享
发布于 2016-08-28 23:11
是内推还是校招?
点赞 回复 分享
发布于 2016-08-28 22:28

相关推荐

点赞 评论 收藏
分享
暴杀流调参工作者:春招又试了一些岗位,现在投递很有意思,不仅要精心准备简历,投递官网还得把自己写的东西一条一条复制上去,阿里更是各个bu都有自己的官网,重复操作无数次,投完简历卡完学历了,又该写性格测评、能力测评,写完了又要写专业笔试,最近还有些公司搞了AI辅助编程笔试,有些还有AI面试,对着机器人话也听不明白录屏硬说,终于到了人工面试又要一二三四面,小组成员面主管面部门主管面hr面,次次都没出错机会,稍有不慎就是挂。 卡学历卡项目卡论文卡实习什么都卡,没有不卡的😂
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
正在热议
更多
# 春招至今,你的战绩如何? #
9757次浏览 91人参与
# 你的实习产出是真实的还是包装的? #
1758次浏览 40人参与
# 米连集团26产品管培生项目 #
5761次浏览 214人参与
# 军工所铁饭碗 vs 互联网高薪资,你会选谁 #
7464次浏览 43人参与
# 简历第一个项目做什么 #
31568次浏览 330人参与
# 重来一次,我还会选择这个专业吗 #
433365次浏览 3926人参与
# MiniMax求职进展汇总 #
23859次浏览 308人参与
# 当下环境,你会继续卷互联网,还是看其他行业机会 #
186990次浏览 1122人参与
# 牛客AI文生图 #
21408次浏览 238人参与
# 不考虑薪资和职业,你最想做什么工作呢? #
152293次浏览 887人参与
# 研究所笔面经互助 #
118873次浏览 577人参与
# 简历中的项目经历要怎么写? #
310079次浏览 4194人参与
# AI时代,哪些岗位最容易被淘汰 #
63432次浏览 804人参与
# 面试紧张时你会有什么表现? #
30490次浏览 188人参与
# 你今年的平均薪资是多少? #
213013次浏览 1039人参与
# 你怎么看待AI面试 #
179875次浏览 1235人参与
# 高学历就一定能找到好工作吗? #
64313次浏览 620人参与
# 你最满意的offer薪资是哪家公司? #
76438次浏览 374人参与
# 我的求职精神状态 #
447988次浏览 3128人参与
# 正在春招的你,也参与了去年秋招吗? #
363256次浏览 2637人参与
# 腾讯音乐求职进展汇总 #
160585次浏览 1111人参与
# 校招笔试 #
470477次浏览 2964人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务