-1
我有以下的載體。 V = {1,2,3,4}
我想找到的所有元素對。在總我得K(K-1)/ 2雙元件。找到對元素的矢量
pairs = {1,2},{1,3},{1,4},{2,3},{2,4},{3,4}。
Formula: K(K-1)/2 = 4(4-1)/2 = 6 pairs
什麼應該是這個算法的僞代碼。
謝謝dasblinkenlight的幫助。我寫的代碼,它可能會幫助別人的未來:
僞代碼:dasblinkenlight
for i in [0..N)
pair.first = data[i] // Set the first element
for j in (i..N)
pair.second = data[j] // Set the second element
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
vector<int> v;
v.push_back(1);
v.push_back(2);
v.push_back(3);
v.push_back(4);
typedef pair<int,int> pairs;
pairs p;
vector<pairs> pVec;
for(size_t i = 0; i < v.size();i++)
{
p.first = v[i]; // Set the first element
for(size_t j = i+1; j < v.size();j++)
{
p.second = v[j];// Set the second element
pVec.push_back(p); // Add p to vector
}
}
// Print pairs
for(size_t i = 0; i < pVec.size();i++)
{
cout <<"{"<< pVec[i].first <<" "<<pVec[i].second <<"}" <<", ";
}
return 0;
}
讓我看看。每次將數據[j]分配給** pair.second **之後,我都會將pair添加到對的向量中? –
@ ring0是的,你是對的 - 我編輯了第一個循環來使用'i'。 'first!= second'的檢查是不必要的,因爲'j'從'i + 1'開始(我用間隔的數學表示法)。 – dasblinkenlight
@HaniGoc是的,一旦你分配'pair.second',這一對就完成了並且可以使用。您可以將其添加到矢量中,將其打印出來,或者做任何其他您希望用這對工具執行的操作。 – dasblinkenlight