250:题意是每个人读书分为3个步骤,三个步骤的顺序可以不同,当且仅当三个步骤连续出现时才算读完了一本书,给你一些字符串,问这个人最多读了几本书。贪心即可。
#include <iostream> #include <cstdio> #include <cstring> #include <vector> #include <string> using namespace std; class ReadingBooks{ public: int countBooks(vector <string> readParts) { int a[100], cnt = 0; int len = readParts.size(); memset(a, 0, sizeof(a)); for (int i = 0; i < len; i++) { if (readParts[i] == "introduction") a[i] = 1; else if (readParts[i] == "story") a[i] = 2; else a[i] = 4; } for (int i = 2; i < len; i++) { if ((a[i] | a[i-1] | a[i-2]) == 7) { i += 2; cnt++; } } return cnt; } };