过了,但代码很冗长,求简化
查看原帖
过了,但代码很冗长,求简化
1122193
FarmerDrone楼主2024/2/28 21:48

因为用的STL,所以函数不会写了

#include <bits/stdc++.h>
using namespace std;

int main() 
{
	map <string, int> ds;
	ds["S12"] = -100;
	ds["D11"] = 100;
	ds["H1"] = -50;
	ds["H2"] = -2;
	ds["H3"] = -3;
	ds["H4"] = -4;
	ds["H5"] = -5;
	ds["H6"] = -6;
	ds["H7"] = -7;
	ds["H8"] = -8;
	ds["H9"] = -9;
	ds["H10"] = -10;
	ds["H11"] = -20;
	ds["H12"] = -30;
	ds["H13"] = -40;
	int a, b, c, d = 1;
	while (a | b | c | d)
	{
		set <string> A;
		set <string> B;
		set <string> C;
		set <string> D;
		string str;
		cin >> a;
		for (int i = 0; i < a; i++)
			cin >> str, A.insert(str);
		cin >> b;
		for (int i = 0; i < b; i++)
			cin >> str, B.insert(str);
		cin >> c;
		for (int i = 0; i < c; i++)
			cin >> str, C.insert(str);
		cin >> d;
		for (int i = 0; i < d; i++)
			cin >> str, D.insert(str);
		int ans_a, ans_b, ans_c, ans_d;
		if (A.size() == 1 && A.find("C10") != A.end())
			ans_a = 50;
		else
		{
			if (A.find("S12") != A.end() && A.find("D11") != A.end() && A.find("H1") != A.end() && A.find("H2") != A.end() && A.find("H3") != A.end() && A.find("H4") != A.end() && A.find("H5") != A.end() && A.find("H6") != A.end() && A.find("H7") != A.end() && A.find("H8") != A.end() && A.find("H9") != A.end() && A.find("H10") != A.end() && A.find("H11") != A.end() && A.find("H12") != A.end() && A.find("H13") != A.end())
				ans_a = 500;
			else if (A.find("H1") != A.end() && A.find("H2") != A.end() && A.find("H3") != A.end() && A.find("H4") != A.end() && A.find("H5") != A.end() && A.find("H6") != A.end() && A.find("H7") != A.end() && A.find("H8") != A.end() && A.find("H9") != A.end() && A.find("H10") != A.end() && A.find("H11") != A.end() && A.find("H12") != A.end() && A.find("H13") != A.end())
			{
				ans_a = 200;
				if (A.find("S12") != A.end())
					ans_a -= 100;
				if (A.find("D11") != A.end())
					ans_a += 100;
			}
			else
			{
				set <string> :: iterator it_a;
				ans_a = 0;
				for (it_a = A.begin(); it_a != A.end(); it_a++)
					ans_a += ds[*it_a];
			}
			if (A.find("C10") != A.end())
				ans_a *= 2;
		}
		if (ans_a > 0)
			cout << "+";
		if (a | b | c | d)
			cout << ans_a << " ";
		if (B.size() == 1 && B.find("C10") != B.end())
			ans_b = 50;
		else
		{
			if (B.find("S12") != B.end() && B.find("D11") != B.end() && B.find("H1") != B.end() && B.find("H2") != B.end() && B.find("H3") != B.end() && B.find("H4") != B.end() && B.find("H5") != B.end() && B.find("H6") != B.end() && B.find("H7") != B.end() && B.find("H8") != B.end() && B.find("H9") != B.end() && B.find("H10") != B.end() && B.find("H11") != B.end() && B.find("H12") != B.end() && B.find("H13") != B.end())
				ans_b = 500;
			else if (B.find("H1") != B.end() && B.find("H2") != B.end() && B.find("H3") != B.end() && B.find("H4") != B.end() && B.find("H5") != B.end() && B.find("H6") != B.end() && B.find("H7") != B.end() && B.find("H8") != B.end() && B.find("H9") != B.end() && B.find("H10") != B.end() && B.find("H11") != B.end() && B.find("H12") != B.end() && B.find("H13") != B.end())
			{
				ans_b = 200;
				if (B.find("S12") != B.end())
					ans_b -= 100;
				if (B.find("D11") != B.end())
					ans_b += 100;
			}
			else
			{
				set <string> :: iterator it_b;
				ans_b = 0;
				for (it_b = B.begin(); it_b != B.end(); it_b++)
					ans_b += ds[*it_b];
			}
			if (B.find("C10") != B.end())
				ans_b *= 2;
		}
		if (ans_b > 0)
			cout << "+";
		if (a | b | c | d)
			cout << ans_b << " ";
		if (C.size() == 1 && C.find("C10") != C.end())
			ans_c = 50;
		else
		{
			if (C.find("S12") != C.end() && C.find("D11") != C.end() && C.find("H1") != C.end() && C.find("H2") != C.end() && C.find("H3") != C.end() && C.find("H4") != C.end() && C.find("H5") != C.end() && C.find("H6") != C.end() && C.find("H7") != C.end() && C.find("H8") != C.end() && C.find("H9") != C.end() && C.find("H10") != C.end() && C.find("H11") != C.end() && C.find("H12") != C.end() && C.find("H13") != C.end())
				ans_c = 500;
			else if (C.find("H1") != C.end() && C.find("H2") != C.end() && C.find("H3") != C.end() && C.find("H4") != C.end() && C.find("H5") != C.end() && C.find("H6") != C.end() && C.find("H7") != C.end() && C.find("H8") != C.end() && C.find("H9") != C.end() && C.find("H10") != C.end() && C.find("H11") != C.end() && C.find("H12") != C.end() && C.find("H13") != C.end())
			{
				ans_c = 200;
				if (C.find("S12") != C.end())
					ans_c -= 100;
				if (C.find("D11") != C.end())
					ans_c += 100;
			}
			else
			{
				set <string> :: iterator it_c;
				ans_c = 0;
				for (it_c = C.begin(); it_c != C.end(); it_c++)
					ans_c += ds[*it_c];
			}
			if (C.find("C10") != C.end())
				ans_c *= 2;
		}
		if (ans_c > 0)
			cout << "+";
		if (a | b | c | d)
			cout << ans_c << " ";
		if (D.size() == 1 && D.find("C10") != D.end())
			ans_d = 50;
		else
		{
			if (D.find("S12") != D.end() && D.find("D11") != D.end() && D.find("H1") != D.end() && D.find("H2") != D.end() && D.find("H3") != D.end() && D.find("H4") != D.end() && D.find("H5") != D.end() && D.find("H6") != D.end() && D.find("H7") != D.end() && D.find("H8") != D.end() && D.find("H9") != D.end() && D.find("H10") != D.end() && D.find("H11") != D.end() && D.find("H12") != D.end() && D.find("H13") != D.end())
				ans_d = 500;
			else if (D.find("H1") != D.end() && D.find("H2") != D.end() && D.find("H3") != D.end() && D.find("H4") != D.end() && D.find("H5") != D.end() && D.find("H6") != D.end() && D.find("H7") != D.end() && D.find("H8") != D.end() && D.find("H9") != D.end() && D.find("H10") != D.end() && D.find("H11") != D.end() && D.find("H12") != D.end() && D.find("H13") != D.end())
			{
				ans_d = 200;
				if (D.find("S12") != D.end())
					ans_d -= 100;
				if (D.find("D11") != D.end())
					ans_d += 100;
			}
			else
			{
				set <string> :: iterator it_d;
				ans_d = 0;
				for (it_d = D.begin(); it_d != D.end(); it_d++)
					ans_d += ds[*it_d];
			}
			if (D.find("C10") != D.end())
				ans_d *= 2;
		}
		if (ans_d > 0)
			cout << "+";
		if (a | b | c | d)
			cout << ans_d << endl;
	}
	return 0;
}
2024/2/28 21:48
加载中...