mihuyo笔试查漏补缺

1.首先是一堆考察基础的不定项选择

2.编程题两道,一道是矩阵的顺时针打印


#include <vector>
#include <iostream>
#include <opencv2/opencv.hpp>   // Include OpenCV API
using namespace cv;
using namespace std;
#include <iostream>
#include <vector>
using namespace std;
char out(vector<vector<char> > &r, char &start, int N, int M, int time)//从字符start开始,只打印N*M的最外面一层
{

	int l = 0, h = 0;
	char s = start;
	int wdown = 0;
	for (l = time; l < M - time; l++)//上
	{
		r[time][l] = s;
		s++;
		if (s > 'Z') s = 'A';
	}
	for (h = time + 1; h < N- time; h++)//右
	{
		r[h][M - time - 1] = s;
		s++;
		if (s > 'Z') s = 'A';
	}
	for (l = M - time - 2; l >= time&&time<N-time-1; l--)//下,需要注意的是当只有一行或一列时会出现重复写的情况
	{
		r[N - time - 1][l] = s;
		s++;
		if (s > 'Z') s = 'A';
	}
	for (h = N - time - 2; h > time&&time<M-time-1; h--)//左
	{
		r[h][time] = s;
		s++;
		if (s > 'Z') s = 'A';
	}
	//for (auto i : r)
	//{
	//	for (auto j : i)
	//		if(j!=' ')cout << j << " ";
	//		else cout << "  ";
	//	cout << endl;
	//}
	return s;
}
int main()
{
	int n =5,m =8;
	
	vector<vector<char> > re(n, vector<char> (m));
	int min = n < m ? n : m;
	char s = 'A';
	for (int time = 0; time <( min+1)/2; time++)
		s = out(re, s, n, m, time);
	for (auto i : re)
	{
		for (auto j : i)
			cout << j << " ";
		cout << endl;
	}
	return 0;
}

逻辑上并不困难,主要是需要注意一些代码上的细节,算是在笔试中考察代码基本功的题目。

 

第二道编程题是道字符串的正则匹配:

“.”表示任意字符,“+”表示对前一字符的一次或多次使用,“*”表示对前一字符的零次或多次使用

示例:abbc与ab*c,匹配成功   正则匹配在底层代码中的原理是有穷自动机,(利用图的结构去解决)

 

主要解题思路:一般利用动态规划的思路去做

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

溯夜流云

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值