文章

10

粉丝

40

获赞

2

访问

4.9k

头像
旋转矩阵 - 北航 题解:
P1377 北京航空航天大学机试题
发布于2024年7月30日 22:27
阅读数 698

这个题的核心就是旋转角度和旋转后坐标的映射关系,把这个整明白了,整个题就迎刃而解
了。我一开始用矩阵的图片尝试去解得他们的关系,但看了很久没有思路。直到!我将矩阵
写在一行,惊奇地发现了规律!
举个例子:
123 456 789 
→(顺时针旋转 90)
741 852 963

仔细一看,其实就是原矩阵从最后一行开始,每一行的第一个数字构成了旋转后矩阵的第一
行。即使知道这个点了,数学表示目前还不太能轻松写出的。需要在写for循环的时候根据i
和j的增大关系,来确定最后映射的公式。其他180的,270的和0的,依次类推。

下面看看完整代码(新人友好):
注意:Acwing上只有一组输入,这里有多组输入,注意;

 

#include <iostream>

using namespace std;

const int N = 10;

int s[N][N], t[N][N];
int n;

int main()
{
    while(cin >> n)
	{
		for (int i = 0; i < n; i ++)
        for (int j = 0; j < n; j ++)
            cin >> s[i][j];
            
		for (int i = 0; i < n; i ++)
			for (int j = 0; j < n; j ++)
				cin >> t[i][j];

		if (t[0][0] == s[0][0])
		{
			bool out = false;
			for (int i = 0; i < n; i ++)
			{
				for (int j = 0; j < n; j ++)
					if (t[i][j] != s[i][j])
					{
						cout << "-1" << endl;
						out = true;
						break;
					}
				if (out) brea...
登录查看完整内容


登录后发布评论

暂无评论,来抢沙发