Task 2 Similarity
Здравейте!
Аз май нещо не разбирам по условието на задача.. Моля за съдействие.
Във файла е обяснено, че едно от изискванията е да има минимум процент на повтаряемост P(a minimum percentage – P – of their letters match (a letter in W1 matches a letter in W2 if the two letters are the same symbol and are at the same position in both words))
Примерът, който са дали дават обяснение, че в дадените думи минимума е 40, което е ОК, обаче ако е 43 вече не е ок? Нали минимума е 40.. Би трябвало 43 също да е ОК?
(For example, if W1 = “kittens” and W2 = “kidding”, the matching letters would be k, i, and n. That gives us 3 matching letters out of 7 letters, which is about 42.8% of the letters. If P = 40, then we would say the words match. If P = 43, we would say the words don’t match.)
Може ли малко разяснения, ако някой ги вижда нещата по друг начин :)
Благодаря!
Виж дали когато смятащ процента дали включваш и самия зададен процент
т.е. нещо от сорта countSimilarLetters * 100.0 / KEYLEN >= percent
където KEYLEN e дължината на зададената дума.
Благодаря за отговора, да смятам го и него. Другаде е проблемът за съжаление...
на Тест 4 гърми програмата . Някакви други идеи ? :)
Аз правя една проверка дали дължината на дадената дума е равна с тази на текущата, както и дали първите букви съвпадат.
Това ми е в един if. Ако проверката мине веднага сетвам countSimilarLetters = 1.
Просто само това се сещам за момента.
От друга страна ако грешката е time limit - нещо judge напоследък ги дава тези грешки.
И още нещо се сещам сега - виж дали правилно правиш разделянето на думите. Имаше някаква заигравка ако накрая имаш специфичен символ.
LENGTH = input.size();
if (input[i] == '.' ||
input[i] == ',' ||
input[i] == ';' ||
input[i] == '!' ||
input[i] == '?' ||
input[i] == ' ') {
std::string currentWord = input.substr(start, countLen - 1);
words.push_back(currentWord);
start = i + 1;
countLen = 0;
} else if (i == LENGTH - 1) {
std::string currentWord = input.substr(start, countLen);
words.push_back(currentWord);
start = i + 1;
countLen = 0;
}
За всеки цикъл увеличавам countLen, което в началото е 0.
Ванка много благодаря пак за помощта...не е това, предвидил съм ги и тези проверки.Проблемът беше, че там където смяташ процентите трябва да са ти флоут а не интиджър.Явно на тест 4 разликата в процентите е след десетичната точка. Поздрави и приятни бири :-)
Радвам се, че се справи.
Приятна и на теб.