hdu 4772 Zhuge Liang's Password

简介: 点击打开链接 题意:给定两个n*n的矩阵,矩阵可以进行90,180,270的旋转,问两个矩阵完全重合的时候最多有几个数是相同的 思路:暴力枚举第一个矩阵的4种情况和第二个矩阵匹配,求出ans 代码: #include#include...

点击打开链接

题意:给定两个n*n的矩阵,矩阵可以进行90,180,270的旋转,问两个矩阵完全重合的时候最多有几个数是相同的

思路:暴力枚举第一个矩阵的4种情况和第二个矩阵匹配,求出ans

代码:

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;

const int MAXN = 310;

int n;
int mat[MAXN][MAXN];
int mp[MAXN][MAXN];
int tmp[MAXN][MAXN];

void getTmp(){
	int pos = 0;
	memcpy(mat , tmp , sizeof(tmp));
	for(int i = n-1 ; i >= 0 ; i-- , pos++)
		for(int j = 0 ; j < n ; j++)
            tmp[pos][j] = mat[j][i]; 
}

int getCnt(){
	int cnt = 0;
	for(int i = 0 ; i < n ; i++){
		for(int j = 0 ; j < n ; j++)
			if(tmp[i][j] == mp[i][j])
				cnt++;
	}
	return cnt;
}

int solve(){
    int ans = 0;
	memcpy(tmp , mat , sizeof(tmp));
	// 0 
	ans = max(ans , getCnt());
	// 90
	getTmp();
	ans = max(ans , getCnt());
	// 1800 
	getTmp();
	ans = max(ans , getCnt());
	// 270 
	getTmp();
	ans = max(ans , getCnt());
    return ans;
}

int main(){
    while(scanf("%d" , &n) && n){
		for(int i = 0 ; i < n ; i++)
			for(int j = 0 ; j < n ; j++)
				scanf("%d" , &mat[i][j]);
		for(int i = 0 ; i < n ; i++)
			for(int j = 0 ; j < n ; j++)
				scanf("%d" , &mp[i][j]);
		printf("%d\n" , solve());
	}
	return 0;
}


目录
相关文章
|
6月前
|
应用服务中间件 C++ AHAS
hdu1327 Definite Values
hdu1327 Definite Values
27 0
|
6月前
|
Java Go
hdu 1216 Assistance Required
hdu 1216 Assistance Required
21 0
|
8月前
BUUCTF password 1
BUUCTF password 1
113 0
|
11月前
|
数据安全/隐私保护 C++
【PAT甲级 - C++题解】1035 Password
【PAT甲级 - C++题解】1035 Password
43 0
|
数据安全/隐私保护
password题解
password题解
62 0
password题解
【1035】Password (20 分)
【1035】Password (20 分) 【1035】Password (20 分)
90 0
|
索引
1035. Password (20)
To prepare for PAT, the judge sometimes has to generate random passwords for the users.
956 0
|
数据安全/隐私保护 网络架构 网络安全
|
数据安全/隐私保护 网络架构 网络安全