Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <fstream>
- #include <string>
- #include <vector>
- #include <map>
- #include <set>
- #include <algorithm>
- using namespace std;
- double meas_simm(set<string> set1, set<string> set2){
- set<string> s3;
- set<string> s4;
- set_intersection(set1.begin(), set1.end(), set2.begin(), set2.end(), inserter(s3, s3.begin()));
- set_union(set1.begin(), set1.end(), set2.begin(), set2.end(), inserter(s4, s4.begin()));
- return (double)s3.size() / (double) s4.size();
- }
- int main(){
- ifstream file("C:\\Users\\wasya\\CLionProjects\\servak\\count_big.txt"); //C:\Users\wasya\CLionProjects\servak
- string word;
- int rate;
- // double koef = 0;
- // string output;
- // int curRate = 0;
- // map<string, pair<set<string>, int>> count_big;
- string wordInc;
- vector<set<string>> bigSet;
- array<string, 20> ans;
- array<int, 20> vecRate;
- array<double, 20> vecKoef;
- ans.fill("zz");
- vecRate.fill(0);
- vecKoef.fill(0);
- for (int i = 0 ; i < 10; i++){
- cin >> wordInc;
- // while (cin >> wordInc){
- set<string> curSet;
- for (int i = 0; i < wordInc.size(); i++){
- curSet.insert(wordInc.substr(i, 2));
- }
- bigSet.push_back(curSet);
- }
- while (file >> word && file >> rate){
- set<string> curSet;
- if (word.size() == 1){
- curSet.insert(word);
- } else {
- for (int i = 0; i < word.size() - 1; i++) {
- curSet.insert(word.substr(i, 2));
- }
- }
- for (int i = 0; i < bigSet.size(); i++) {
- double measure = meas_simm(bigSet[i], curSet);
- if (measure > vecKoef[i]){
- vecKoef[i] = measure;
- ans[i] = word;
- vecRate[i] = rate;
- } else if (measure == vecKoef[i]){
- if (rate > vecRate[i]){
- vecKoef[i] = measure;
- ans[i] = word;
- vecRate[i] = rate;
- } else if (rate == vecRate[i]){
- if (word < ans[i]){
- vecKoef[i] = measure;
- ans[i] = word;
- vecRate[i] = rate;
- }
- }
- }
- }
- }
- for (int i = 0; i < ans.size(); i++){
- if (ans[i] == "zz") break;
- cout << ans[i] << endl;
- }
- // while (file >> word && file >> rate){
- // set<string> set;
- // if (word.size() == 1) {
- // set.insert(word);
- // } else {
- // for (int i = 0; i < word.size() - 1; i++) {
- // set.insert(word.substr(i, 2));
- // }
- // }
- // auto para = make_pair(word, make_pair(set, rate));
- // count_big.insert(para);
- // }
- //
- // while (cin >> wordInc){
- // set<string> set;
- // if (wordInc.size() == 1){
- // set.insert(wordInc);
- // } else {
- // for (int i = 0; i < wordInc.size() - 1; i++){
- // set.insert(wordInc.substr(i, 2));
- // }
- // }
- // double koef = 0;
- // string output;
- // int rate = 0;
- // for (auto pair : count_big){
- // double measure = meas_simm(set, pair.second.first);
- // if (measure > koef){
- // koef = measure;
- // output = pair.first;
- // rate = pair.second.second;
- // } else if (measure == koef){
- // if (rate < pair.second.second){
- // koef = measure;
- // output = pair.first;
- // rate = pair.second.second;
- // } else if (rate == pair.second.second){
- // if (pair.first < output){
- // koef = measure;
- // output = pair.first;
- // rate = pair.second.second;
- // }
- // }
- // }
- // }
- // cout << output << endl;
- // }
- file.close();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement