首页 > 美团笔试9.13算法岗
头像
。201908111350761
编辑于 2020-09-14 14:07
+ 关注

美团笔试9.13算法岗

第一题:最小矩阵
#include<iostream>
#include<vector>
#include<string>
#include<algorithm>
using namespace std;
bool fun(vector<vector<int>>a, vector<vector<int>>b)
{
	for (int i = 0; i < a.size(); i++)
	{
		for (int j = 0; j < a[0].size(); j++)
		{
			if (a[i][j] != b[i][j])
			{
				for (int k = 0; k <a.size() ; k++)
				{
					for (int z = 0; z < a[0].size(); z++)
					{
						if (a[k][z] != b[a.size()-1-k][z])
						{
							return false;
						}
					}
				}
				return true;
			}
		}
	}
	return true;
}
int main()
{
	int n, m;
	cin >> n >> m;
	vector<vector<int>>nums;
	for (int i = 0; i < n; i++)
	{
		vector<int> tem(m, 0);
		for (int j = 0; j < m; j++)
		{
			cin >> tem[j];
		}
		nums.push_back(tem);

	}
	
	

	vector<vector<int>>tem = nums;
	int top = 0, butt = tem.size();
	
	while (top <= butt)
	{
		vector<vector<int>>a, b;
		int mid = (top + butt) / 2;
		a.assign(tem.begin(), tem.begin() + mid);
		b.assign(tem.begin() + mid, tem.end());
		if(fun(a, b))
		{
			vector<vector<int>>tem = a;
			butt = mid;

		}
		else
		{
			for (int i = 0; i < butt; i++)
			{
				for (int j = 0; j < m; j++)
				{
					cout << nums[i][j] << " ";
				}
				cout << endl;
			}
			break;
		}

	}



	return 0;
}
第二题
#include<iostream>
#include<vector>
#include<string>

#include<algorithm>
using namespace std;

int main()
{
	int n, m,k;
	cin >> n >> m>>k;
	vector<int>nums(n, 0);
	for (int j = 0; j < n; j++)
		{
			cin >> nums[j];
		}
	vector<int>tem;
	int res=0;
	for (int i = 0; i < n; i++)
		{
		if (nums[i]>=k)
		{
			if (tem.size()== m)
			{
				tem.erase(tem.begin());
			}
			tem.push_back(nums[i]);

		}
		else
		{
			tem.clear();

		}
		if (tem.size() == m)
		{
			res++;
		}


		}
	cout << res<<endl;

	
	


	return 0;
}



全部评论

(1) 回帖
加载中...
话题 回帖

推荐话题

相关热帖

历年真题 真题热练榜 24小时
技术(软件)/信息技术类
查看全部

近期精华帖

热门推荐