[英]Sorting with c++ algorithm
我想按重量對筷子進行排序,並且在程序結尾處需要匹配的一雙筷子。 我應該使用排序算法嗎? 我想按重量(例如110、90、110、90)對它進行排序,因此在這種情況下我得到了2對。 一個體重為90,另一個體重為110,但是我該如何追蹤呢? 我知道我必須使用計數器,但是我不知道如何使用。
#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
bool myChopsticks (int i, int j)
{
return (i<j);
}
int main()
{
int myintergers []= {90, 110, 90, 110};
vecotr<int> myvector(myintergers, myintergers+4);
vector<int>::iterator it;
sort (myvector.begin(), myvector.end()+2);
cout << "myvector contains:";
for (it=myvector.begin(); it!=myvector.end(); ++it)
cout << " " << *it; cout << endl;
return 0;
}
是的,我想是這樣。
通過對筷子進行分類,您可以將它們整理好。 然后,查找具有相等權重的對將變得更加容易(只需對有序集合進行一次迭代)。
存儲一串筷子(可能在vector <>中)似乎足夠了,然后遍歷它們以查找匹配項並顯示出來。
或者,std:mapping為您實現了一個二叉樹,該二叉樹應使搜索匹配項非常有效。
如果您知道只有一對配對,請使用std::map<weight, chopstick>
並在執行find(newWeight)
調用后在給定點插入。 如果find()
在任何時候都返回完全匹配項,那么您就完成了。
如果存在多個可能的匹配對,則使用std::multimap<weight, chopstick>
,然后迭代生成的容器,以count()
每個不同值的匹配數。
如果最后不需要真正的筷子,而只是一雙匹配的筷子,那么可以使用std::set<weight>
或std::multiset<weight>
代替。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.