社区讨论

14分117行燃尽了

P1205[USACO1.2] 方块转换 Transformations参与者 3已保存回复 5

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
5 条
当前快照
1 份
快照标识符
@mhjajw1a
此快照首次捕获于
2025/11/03 23:24
4 个月前
此快照最后确认于
2025/11/03 23:24
4 个月前
查看原帖
CPP
#include<bits/stdc++.h>
using namespace std;
vector<string> rotate_right(vector<string> a) {
	for(int j=0; j<a.size(); j++) {
		for(int i=0; i<ceil(a.size()*1.0/2); i++) {
			swap(a[i][j],a[a.size()-i-1][j]);
		}
	}
	for(int i=0; i<a.size(); i++) {
		for(int j=i; j<a.size(); j++) {
			swap(a[i][j],a[j][i]);
		}
	}
	return a;
}
vector<string> rotate_left(vector<string> a) {
	for(int i=0; i<a.size(); i++) {
		for(int j=i; j<a.size(); j++) {
			swap(a[i][j],a[j][i]);
		}
	}
	for(int j=0; j<a.size(); j++) {
		for(int i=0; i<ceil(a.size()*1.0/2); i++) {
			swap(a[i][j],a[a.size()-i-1][j]);
		}
	}
	return a;
}
vector<string> rotate(vector<string> a) {
	for(int j=0; j<a.size(); j++) {
		for(int i=0; i<ceil(a.size()*1.0/2); i++) {
			swap(a[i][j],a[a.size()-i-1][j]);
		}
	}
	for(int i=0; i<a.size(); i++) {
		for(int j=0; j<ceil(a.size()*1.0/2); j++) {
			swap(a[i][j],a[i][a.size()-j-1]);
		}
	}
	return a;
}
vector<string> ref(vector<string> a) {
	for(int i=0; i<a.size(); i++) {
		for(int j=0; j<ceil(a.size()*1.0/2); j++) {
			swap(a[i][j],a[i][a.size()-j-1]);
		}
	}
	return a;
}
vector<string> choi(vector<string> a,int m) {
	for(int i=0; i<a.size(); i++) {
		for(int j=0; j<ceil(a.size()*1.0/2); j++) {
			swap(a[i][j],a[i][a.size()-j-1]);
		}
	}
	switch(m) {
		case 1:
			a=rotate_right(a);
			break;
		case 2:
			a=rotate_left(a);
			break;
		case 3:
			a=rotate(a);
			break;
		case 4:
			a=ref(a);
			break;
	}
	return a;
}
vector<string> a,b;
int n;
int main() {
	cin>>n;
	for(int i=0; i<n; i++) {
		string t;
		cin>>t;
		a.push_back(t);
	}
	for(int i=0; i<n; i++) {
		string t;
		cin>>t;
		b.push_back(t);
	}
	switch(1) {
		case 1:
			if(rotate_right(a)==b)cout<<1;
			break;
		case 2:
			if(rotate_left(a)==b)cout<<2;
			break;
		case 3:
			if(rotate(a)==b)cout<<3;
			break;
		case 4:
			if(ref(a)==b)cout<<4;
			break;
		case 5:
			int i;
			for(i=1; i<=4; i++) {
				if(choi(a,i)==b) {
					cout<<5;
					break;
				}
			}
			if(choi(a,i)==b)break;
		case 6:
			if(a==b) {
				cout<<6;
				break;
			}
		default:
			cout<<7;
	}
	return 0;
}

回复

5 条回复,欢迎继续交流。

正在加载回复...