Ngày 5, Advent of code 2015

bool contains(string& s, string term)
{
	return s.find(term) != string::npos;
}

int main()
{
	string s;

	long ans = 0;
	while (true)
	{
		cin >> s;

		if (s == ".")
			break;

		int vowelCount = 0;
		bool duplicate = false, disallowed = false;
		for (int i = 0; i < (int)s.size(); i++)
		{
			switch (s[i])
			{
			case 'u':
			case 'e':
			case 'o':
			case 'a':
			case 'i':
				vowelCount++;
				break;
			}

			if (i != s.size() - 1 && s[i] == s[i + 1])
				duplicate = true;
		}

		disallowed = contains(s, "ab") || contains(s, "cd") || contains(s, "xy") || contains(s, "pq");

		if (vowelCount >= 3 && duplicate && !disallowed)
			ans++;
	}

	cout << ans;
	return 0;
}

Đề bài đây ạ: . Day 5 - Advent of Code 2015. Thuật toán em ra 236 vẫn không pass được.

Không hiểu bạn chạy như nào mà ra được 236 nhỉ? Rõ ràng ở đây kết quả ra khác mà ta?

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?