나는 점수를 계산하는이 함수를 기반으로 가장 높은 점수를 가진 단어를 나열하는 방법을 찾고자합니다. 단어는 단어의 배열에서 나온 것입니다. 이 문제를 어떻게 해결할 수 있습니까? 그냥 가장 높은 점수 단어를 필요로하기 때문에가장 높은 점수를 가진 단어를 나열하는 방법
1
A
답변
4
는 모든 후보의 단어를 점수를 추적 할 필요가 없습니다. 을 가장 잘 추적하면 하나면 충분합니다.
string best_word;
int best_score = 0;
for (auto word &: all_the_words) {
int cur_score = ScrabbleScore(word);
if (cur_score > best_score) {
best_word = word;
best_score = cur_score;
}
}
// Now you have best_word and best_score.
편집 : 같은 최고 점수로 모든 단어를 돌봐 확장합니다.
vector<string> best_words;
int best_score = 0;
for (auto word &: all_the_words) {
int cur_score = ScrabbleScore(word);
if (cur_score > best_score) {
best_words.clear();
best_words.push_back(word);
best_score = cur_score;
} else if (cur_score == best_score) {
best_words.push_back(word);
}
}
// Now you have best_words and best_score.
1
당신은 std::vector<std::string>
에 단어 문자열을 놓고, 그들의 "점수"에 의해 단어를 정렬 할 사용자 정의 비교 함수을 지정하는 벡터에 std::sort()
알고리즘을 호출 할 수 있습니다.
#include <algorithm> // for std::sort
#include <exception> // for std::exception
#include <iostream> // for std::cout
#include <stdexcept> // for std::runtime_error
#include <string> // for std::string
#include <vector> // for std::vector
using namespace std;
// NOTE #1: Since this function is *observing* the "word" parameter,
// pass it by const reference (const string & word).
int ScrabbleScore(const string & word) {
int score = 0;
static const char scoreTable[26] = {
1, 3, 3, 2, 1, 4, 2, 4, 1, 8,
5, 1, 3, 1, 1, 3, 10, 1, 1, 1,
1, 4, 4, 8, 4, 10
};
for (auto letter : word) {
// if alphabet word
if (letter >= 'a' && letter <= 'z') {
score += scoreTable[letter - 'a'];
} else {
// NOTE #2: Throw an exception when an invalid
// letter is found.
throw runtime_error("Invalid letter in word.");
}
}
return score;
}
int main() {
// Some test words
vector<string> words = {
"hi", "hello", "world", "ciao",
"integer", "sum", "sort", "words"
};
// Sort vector by ScrabbleScore (descending order)
sort(words.begin(), words.end(),
[](const string& lhs, const string& rhs) {
return ScrabbleScore(lhs) > ScrabbleScore(rhs);
}
);
// Print result
cout << "<word> (<score>)" << endl;
cout << "------------------" << endl;
for (const auto & w : words) {
cout << w << " (" << ScrabbleScore(w) << ")" << endl;
}
}
출력 :
<word> (<score>) ------------------ world (9) words (9) hello (8) integer (8) ciao (6) hi (5) sum (5) sort (4)
관련 문제
- 1. 가장 높은 점수를 가지고있는 단어를 선택하고 인쇄하는 방법
- 2. MySQL에서 위치 별 가장 높은 점수를 가진 아티스트를 검색해야합니다.
- 3. 열의 순위를 매기고 가장 높은 점수를 가진 열을 먼저 붙이십시오.
- 4. 가장 높은 점수를 가진 사용자를 얻으려면 어떤 구조를 사용해야합니까?
- 5. 가장 높은 점수를 가진 2D 배열 (보드) 최단 경로
- 6. 높은 점수를 저장하는 방법
- 7. 가장 높은 값을 가진 정보를 얻는 방법
- 8. Bash는 가장 높은 값을 가진 라인을 출력합니다.
- 9. tfidf 색인 및 점수를 기반으로 가장 대표적인 단어를 찾는 방법
- 10. facebook wall (android + facebook)에서 가장 높은 점수를 올리는 방법
- 11. 목록에서 가장 높은 점수를 얻은 항목을 얻는 방법
- 12. corona sdk로 높은 점수를 추적하는 간단한 방법
- 13. 가장 낮은 점수를 가진 이름의 arraylist 만들기
- 14. 가장 높은 합계 값을 찾는 방법
- 15. 가장 높은 ID를 가진 레코드에 대한 쿼리
- 16. 가장 높은 값을 가진 NSMutableDictionary의 리턴 키
- 17. 가장 높은 주문 값을 가진 행을 선택하십시오.
- 18. 가장 높은 값을 가진 배열에서 객체를 반환하십시오.
- 19. 가장 높은 값을 가진 행은 무엇입니까?
- 20. 레일에서 가장 높은 값을 가진 레코드를 선택하십시오.
- 21. C에서 가장 긴 단어를 가진 문자 수
- 22. SQL 쿼리 - 가장 높은 평점을 가진 항목을 얻는 방법?
- 23. 가장 높은 수의 속성을 가진 객체를 찾는 방법
- 24. A *를 사용하여 가장 높은 게인을 가진 경로를 찾는 방법
- 25. 초 가장 높은 값을 가진 모든 행을 얻는 방법
- 26. 허용되는 단어를 나열하는 정규 표현식
- 27. MySQL : 가장 빠른 상승 점수를 가진 항목을 선택/정렬
- 28. Facebook 또는 Twitter에서 높은 점수를 공유하십시오.
- 29. Game Center에 높은 점수를 제출하면 작동하지 않습니다.
- 30. 높은 점수를 추적하는 자체 수정 Python 코드
_tackle의 what_
은 자세한 내용은 다음 샘플 코드를 참조하십시오? 또한 왜'else {Letter = '-'; ...}'? – P0W스크래블 : 음, 그 성가신 빈 타일은 어떨까요? 'else {'를'else if (Letter! = '') {'로 바꿀 것을 제안하십시오. – chux