簡體   English   中英

獲取與特定模式的最小距離的向量的元素位置

[英]get elements positions of a vector with minimal distance from a certain pattern

我有一個向量字符串strvec和一個模式字符串 ,我嘗試沿着strvec進行模糊搜索,以使所有元素位置與模式的距離最小,且具有一定的公差(tol)。 從幾何角度講,我不想讓圓中半徑等於:距strvec + tol的最小距離的單詞成為可能。 所以我的算法應該得到:

  • 距strvec具有minimal_distance的元素位置(如果strvec包含pattern,則算法應繼續搜索以獲得不同於零的最小距離。
    • 距離<minimum_distance + tol的所有元素位置

我假設使用函數get_distance計算距離。

這是我的代碼:

vector<int> dist_minimal(const char* pattern, vector<string> strvec,int tol=4)
{
  std::vector<int> v;
  int min = 100; //  big value to init
  for (vector<string>::iterator it = strvec.begin(); it != strvec.end() ; it++){
   int lev_dist=get_distance(pattern, *it);
   auto position = it-strvec.begin()+1 ;
   if(lev_dist < min && lev_dist >0){
     v.clear();
     v.push_back(position);
     min = lev_dist;
     std::cout << min << std::endl;
   }else if (lev_dist == min){
     v.push_back(position);
   }
  }
  return v;
} 

我只會得到完全等於最小距離的元素,而沒有min_distance和min_distance + tol之間的元素。

你能改變嗎

else if (lev_dist == min)
{
    v.push_back(position);
}

else if ((lev_dist <= (min + tol)) && (lev_dist >= (min - tol)))
{
    v.push_back(position);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM