笔试代码题--米哈游--顺时针打印矩阵字母

23 篇文章 0 订阅
17 篇文章 0 订阅

笔试代码题--米哈游--顺时针打印矩阵字母


题目要求:输入矩阵的行和列,然后顺时针顺出打印字母A-Z。

输入 1: 
    1  1
输出1:
A   A

输入2:
   5     3
输出2:
A   B  C  D  E

L   M  N O  F

K   J   I  H  G

输入3:
   5     3
输出3:
A   B  C  D  E

L   M  N O  F

K   J   I  H  G

输入4:
10  12
输出4:

解题思路:

和顺时针打印矩阵是很像的:https://mp.csdn.net/editor/html/108602165,可看这个博客。

首先输出的顺序如下图:

先将26个字母用字符串string保存起来,然后用index下标位一步一步移动,然后输出字母,注意用%26将从头再开始输出。

注意if(top != bottom),if(left != right),这两个条件是为了避免重复输出。

代码如下:

#include <stdio.h>
#include <string>
#include <iostream>
#include <vector>
using namespace std;

int main()
{
	int m,n;
	cin >> m >> n;

	vector<vector<char>> vec1(m,vector<char>(n));

	string s = "ABCDEFGHIJKLIMNOPQRSTUVWXYZ";
	int index = 0;
	int left = 0,top = 0,right = n - 1 ,bottom = m-1;

	while(left <= right && top <= bottom)
	{
		for(int i = left;i <= right; i++)
		{
			vec1[top][i]= s[index++];
			index %= 26;
		}
		for(int i = top + 1;i <= bottom; i++)
		{
			vec1[i][right]= s[index++];
			index %= 26;
		}
		if(top != bottom)
		{
			for(int i = right-1;i >= left; --i)
			{
				vec1[bottom][i]= s[index++];
				index %= 26;
			}
		}
		if(left != right)//下到上
		{
			for(int i = bottom - 1;i > top; --i)//注意i > top,不是>=,原因可看图解
			{
				vec1[i][left]= s[index++];
				index %= 26;
			}
		}
		left++,top++,right--,bottom--;
	}

    //打印二维数组
	for(int i = 0; i < m;i++)
	{
		for(int j = 0;j < n;j++)
		{
	       cout  << vec1[i][j] << " ";
	     }
		cout << endl;
	}
	return 0;
}

结果1:

结果2:

结果3:

米哈游Java后端笔试是面向Java后端开发岗位的一套笔试目,旨在考察应聘者对Java后端开发的理解和应用能力。 这套笔试目往往包含以下几个方面的内容: 1. Java语言基础:主要考察Java的基本语法、面向对象编程、常用类库等方面的知识。例如,常见的有关Java语言基础的目有:反射机制的理解和应用、线程的创建和使用、异常处理等。 2. 数据库相关知识:主要考察应聘者对数据库的基本理解和SQL的使用能力。例如,常见的数据库相关目有:数据库事务的概念和应用、数据库索引的优化策略、SQL语句的编写和调优等。 3. Web开发框架:主要考察应聘者对常用的Web开发框架的理解和应用能力。例如,常见的Web开发框架目有:Spring框架的注解使用、MyBatis的配置和映射关系等。 4. 系统设计和优化:主要考察应聘者对大型系统设计和性能优化的能力。例如,常见的系统设计和优化目有:数据库连接池的设计和实现、分布式系统的负载均衡策略、系统性能调优等。 总的来说,米哈游Java后端笔试是一套综合考察Java后端开发能力的目,内容涵盖了Java语言基础、数据库相关知识、Web开发框架以及系统设计和优化等方面。应聘者需要具备扎实的Java编程基础,熟悉常用的开发框架和工具,以及对大型系统的设计和性能优化有一定的了解。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值