[洛谷 1205][USACO1.2]方块转换 Transformations {模拟}

本文详细解析了洛谷平台上的P1205题目,通过模拟方法解决字符矩阵旋转和平移的问题,特别关注了使用scanf()读取字符的细节。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目

https://www.luogu.org/problemnew/show/P1205


解题思路

模拟,需要注意的是用scanf()读入字符的方法。


代码

#include<cstdio>
#include<algorithm>
#define rep(i,x,y) for (register int i=x;i<=y;i++)
#define fre(x) freopen(#x".in","r",stdin);freopen(#x".out","w",stdout)
#define N 12
using namespace std;
int n; 
struct matrix{
	char a[N][N]; 
	void in(){rep(i,0,n-1) rep(j,0,n-1) scanf(" %c",a[i]+j);}
	matrix zh(){matrix ans; rep(i,0,n-1) rep(j,0,n-1) ans.a[i][j]=a[n-j-1][i]; return ans;}
	matrix fh(){matrix ans; rep(i,0,n-1) rep(j,0,n-1) ans.a[i][j]=a[i][n-j-1]; return ans;}
	bool operator ==(matrix ans){rep(i,0,n-1) rep(j,0,n-1) if (a[i][j]!=ans.a[i][j]) return 0; return 1;}
}f,t,m;
int main(){
	scanf("%d",&n); f.in(); t.in(); m=f; 
	rep(i,1,3) {m=m.zh(); if (m==t) return 0&printf("%d",i);}
	m=f.fh(); if (m==t) return 0&printf("4"); 
	rep(i,1,3) {m=m.zh(); if (m==t) return 0&printf("5");}
	if (f==t) return 0&printf("6"); 
	printf("7"); 
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值