Pentagon

Pentagon_第1张图片

Pentagon_第2张图片

Pentagon_第3张图片 我的代码解:

#include
#include
#include
using namespace std;
string reverseString(string str) {
	string reversedStr = str;
	int left = 0;
	int right = str.length() - 1;
	while (left < right) {
		swap(reversedStr[left], reversedStr[right]);
		left++;
		right--;
	}
	return reversedStr;
}

int main() {
	/*
		长度只可能有两种情况:为1, 不为1,其中长度为1的线段只有AB,BC,CD,DE,AE及其翻转共10种情况
		先将AB,BC,CD,DE,AE=1用map存起来
		在将输入的S和T首先判断需不需要翻转
		最后再将改线段与map里面的对比,看两个是否为1
	*/
	string S, T;
	cin >> S >> T;
	map m;
	m.insert(make_pair("AB", 1));
	m.insert(make_pair("BC", 1));
	m.insert(make_pair("CD", 1));
	m.insert(make_pair("DE", 1));
	m.insert(make_pair("AE", 1));
	if (S[0] > S[1]) {
		S = reverseString(S);
	}
	if (T[0] > T[1]) {
		T = reverseString(T);
	}
	int n1 = -1, n2 = -1;
	if (m.find(S) != m.end()) {//证明S长度为1
		n1 = 1;
	}
	if (m.find(T) != m.end()) {//证明T长度为1
		n2 = 1;
	}
	if (n1 == n2) {
		cout << "Yes";
	}
	else {
		cout << "No";
	}
}

你可能感兴趣的:(习题,c++,算法,开发语言)