A3: pythagorean

来源:互联网 发布:千牛淘宝卖家怎么发货 编辑:程序博客网 时间:2024/04/28 09:53

 4. find out pythagorean triplets in an integer array.

 

#include <iostream>#include <vector>#include <set>#include <cmath>using namespace std;vector<vector<int> > findP( vector<int> & x ) {set<int> pool;vector<vector<int> > rel;if(x.size() < 3) return rel;for( int i=0; i<x.size(); i++) {pool.insert( x[i] * x[i]);}set<int>::const_iterator it1 = pool.begin();set<int>::const_iterator it2;// = pool.begin();set<int>::const_iterator it3;cout<<"pool size: "<<pool.size()<<endl;for( ; it1!=pool.end(); it1++) {for(it2=++it1; it2!=pool.end();it2++) {int temp = *it1 + *it2;if( (it3=pool.find(temp)) != pool.end()) {vector<int> t;t.push_back( (int)(sqrt((double)*it1)));t.push_back( (int)(sqrt((double)*it2)));t.push_back( (int)(sqrt((double)*it3)));rel.push_back( t );}}}return rel;}int main(int argc, char** argv){int x[] = {1,3,3,4,7,5,12,13};vector<int> input(x,x + sizeof(x)/sizeof(int) );vector<vector<int> > rel = findP(input);vector<vector<int> >::iterator it;for( it=rel.begin(); it!=rel.end(); it++) {for( int i=0; i<(*it).size(); i++) {cout<<(*it)[i]<<", ";}cout<<endl;}}


 

原创粉丝点击