最大子矩阵 滴滴打车2016笔试
2015-09-25 22:06
274 查看
题目原意:求一矩阵中最大的2*2矩阵(元素和最大)的和。
样例输入:1 2 0 3 4;2 3 4 5 1; 1 1 5 3 0
样例输出:17
简析:此题目直接用暴力枚举即可,算法复杂度为O(n*m)。但题目难度在于如何从规定的输入流中获取这个矩阵。以下是我的代码:
#include<vector>
#include<iostream>
#include<utility>
using namespace std;
vector<vector<int> >matrix;
int inputOnLine(vector<int> &in)
{
char buf = 0;
int x;
while (1)
{
buf = getchar(); //取出输入流第一个字符
if ((buf != ';') && (buf != 10))
{
cin.putback(buf); //不是‘;’或者回车就放回输入流,因为这是矩阵的数据
cin >> x;
in.push_back(x);
}
else
break;
}
if (buf != ';')
return -1; //最后一行输入以回车键结束
else
return 0; //中间行以‘;’结束
}
int get2t2Sun(int r, int c)
{
return matrix[r][c] + matrix[r][c + 1] + matrix[r + 1][c] + matrix[r + 1][c + 1];
}
int main()
{
int row = 0, colnum = 0,sum=0,buf;
do
{
matrix.push_back(vector<int>());
colnum=inputOnLine(matrix[row++]);
} while (colnum != -1);
colnum = matrix[0].size();
for (int i = 0; i < row - 1; i++)
{
for (int j = 0; j < colnum - 1; j++)
{
buf = get2t2Sun(i, j);
if (sum < buf)
sum = buf;
}
}
cout << sum;
return 0;
}
样例输入:1 2 0 3 4;2 3 4 5 1; 1 1 5 3 0
样例输出:17
简析:此题目直接用暴力枚举即可,算法复杂度为O(n*m)。但题目难度在于如何从规定的输入流中获取这个矩阵。以下是我的代码:
#include<vector>
#include<iostream>
#include<utility>
using namespace std;
vector<vector<int> >matrix;
int inputOnLine(vector<int> &in)
{
char buf = 0;
int x;
while (1)
{
buf = getchar(); //取出输入流第一个字符
if ((buf != ';') && (buf != 10))
{
cin.putback(buf); //不是‘;’或者回车就放回输入流,因为这是矩阵的数据
cin >> x;
in.push_back(x);
}
else
break;
}
if (buf != ';')
return -1; //最后一行输入以回车键结束
else
return 0; //中间行以‘;’结束
}
int get2t2Sun(int r, int c)
{
return matrix[r][c] + matrix[r][c + 1] + matrix[r + 1][c] + matrix[r + 1][c + 1];
}
int main()
{
int row = 0, colnum = 0,sum=0,buf;
do
{
matrix.push_back(vector<int>());
colnum=inputOnLine(matrix[row++]);
} while (colnum != -1);
colnum = matrix[0].size();
for (int i = 0; i < row - 1; i++)
{
for (int j = 0; j < colnum - 1; j++)
{
buf = get2t2Sun(i, j);
if (sum < buf)
sum = buf;
}
}
cout << sum;
return 0;
}
相关文章推荐
- 如何将数据库连接字符串保存在配置文件中并读取
- 如何将数据库连接字符串保存在配置文件中并读取
- 项目总结之百度地图定位的简单应用
- USB驱动——USB枚举
- mobile angualar ui的简单使用
- vector容器的遍历
- hihoCoder 1233 Boxes(状态压缩)
- 野人学Android基础篇之网络通讯第一课--HttpUrlConnection的使用
- iOS项目开发实战——UIImageView的使用与图片显示模式
- 百度地图环境搭建的问题
- MAC OS X 10.10编译android5.0源码 步骤 以及 遇到的问题
- Xcode下的DerivedData文件
- 二叉树镜像--20150924
- 我的要求很简单,有历史版本功能。协作我当用不上,没有人可以协作(快盘以前是金山的,2014年快盘被迅雷收购)
- Unity3D 多进程注意事项
- 斐波那契查找原理详解与实现
- 贝叶斯网络
- 如何彻底删除 Mac OS X 里那巨大的 sleepimage 文件
- 一个长度为N的数组中包含正数 负数 0,请实现一个函数找出和为0的最长子数列
- 【ACM】HDOJ 1009 FatMouse' Trade