矩阵旋转类

第 二十七 次训练赛 - Virtual Judge (vjudge.net)

解法一:通过数组下标
memcpy(c, a, sizeof a);
    	for (int i = 1; i <= n; i ++)
    		for (int j = 1; j <= n; j ++)
    			c[i][j] = a[n + 1 - j][i];

进行判断

if(c[i][j] == 1 && b[i][j] != 1)
            {
              flag = 0;
              break;
            }

最后复制新的C

 memcpy(a, c, sizeof c);

这样进行最多四次操作

解法二:pair
#include<bits/stdc++.h>
#define int long long
using namespace std;
typedef pair<int, int> PII;
const int N = 1e2 + 10, mod = 998244353;
int n, m;
int a[N][N], b[N][N];
vector<PII> v;
map<PII, int> mp;
void change () {
	for (int i = 0; i < v.size(); i++) {
		int x = v[i].second, y = n-v[i].first+1;
		v[i] = { x,y };
	}
}
signed main(){
	cin >> n;
	for (int i = 1; i <= 2 * n; i++) {
		for (int j = 1; j <= n; j++) {
			if (i <= n) {
				cin >> a[i][j];
				if (a[i][j] == 1) v.push_back({ i,j });
			}
			else {
				cin >> b[i-n][j];
				if (b[i-n][j] == 1) mp[{i-n, j}]++;
			}
		}
	}
	for (int i = 1; i <= 4; i++) {
		bool f = true;
		for (int j = 0; j < v.size(); j++) {
			int x = v[j].first, y = v[j].second;
			if (mp[{x, y}] == 0) {
				f = false;
				break;
			}
		}
		if(!f) change();
		else {
			cout << "Yes" << endl;
			return 0;
		}
	}
	cout << "No" << endl;
	return 0;
}
  • 7
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
旋转矩阵是用来描述物体在三维空间中的旋转变换的工具。在Eigen库中,可以使用旋转矩阵对向量进行旋转操作。旋转矩阵可以通过旋转向量、欧拉角或四元数来初始化。 对于旋转向量,可以使用Eigen库中的AngleAxis来表示。通过将旋转向量与单位向量相乘,可以得到旋转矩阵。具体步骤如下: 1. 初始化旋转向量:使用AngleAxis来创建一个旋转向量,指定旋转角度和旋转轴。 2. 旋转向量转旋转矩阵:使用toRotationMatrix()函数将旋转向量转换为旋转矩阵。 示例代码如下: ``` #include <Eigen/Core> #include <Eigen/Geometry> Eigen::Vector3d axis(1.0, 0.0, 0.0); // 旋转轴 double angle = M_PI / 2; // 旋转角度 Eigen::AngleAxisd rotation_vector(angle, axis); // 初始化旋转向量 Eigen::Matrix3d rotation_matrix = rotation_vector.toRotationMatrix(); // 旋转向量转旋转矩阵 ``` 这样,你就可以使用旋转矩阵来对向量进行旋转操作了。 #### 引用[.reference_title] - *1* *2* [使用Eigen实现四元数、欧拉角、旋转矩阵旋转向量之间的转换](https://blog.csdn.net/qq_34213260/article/details/113651597)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值