草原坝上滑梯
来源:互联网 发布:java实现发送短信 编辑:程序博客网 时间:2024/04/28 19:22
草原坝上滑梯
只能从上下左右侧移动
输入:行数R 列数C
输出:最长区域的长度
样例:
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
输出: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;}
0 0
- 草原坝上滑梯
- 坝上草原扎拉营游感
- 坝上草原行
- 坝上草原-碰碰车
- 五一七人坝上草原行
- 澳洲草原上的羊群
- 草原
- 草原
- 草原风光
- 草原狼
- 草原所思
- geek草原
- 羊历3131年,青青草原上,羊羊族群已经十分兴旺发达
- 八月份去坝上草原
- 草原的狼
- 青青的草原
- 来到草原楼
- 月光下的滑梯、秋千、我
- JQ选择器 如何选择同类元素的第N个子元素
- python爬虫
- 函数
- CSS常用效果实现004——控制div的背景图片的长宽
- Intent 解析
- 草原坝上滑梯
- javascript 单行内容连续滚动,允许停留
- 详细图解什么叫平方探查法即二次探测再散列和线性探测再散列(数据结构 哈希函数 哈希冲突)
- 今天在学习线程的时候接触到消费者和生产者模式,写了简单的代码
- 请求转发和重定向区别
- 2016 苹果全球开发者大会(WWDC)
- matlab练习程序(模拟退火SA)
- 揭露丑恶:当今中国为什么会骗子横行
- AngularJS之下拉框(方式三)