您的位置:首页 > 其它

道路重建

2010-12-04 11:17 141 查看
#include <queue>
#include <set>
#include <vector>
#include <iostream>
#include <cmath>
using namespace std;

int max=0;
int point[6];

priority_queue<int> dist2;
multiset<int> dist;

bool f(int n){
int tempDist;

if(n==6){ //彻底比较是否存在

multiset<int> tempSet=dist;
for( int i=0 ; i<6 ; i++ ){
for( int j=0 ; j<6 ; j++ ){
if(i!=j){
tempDist=abs(point[i]-point[j]);
if( tempSet.find( tempDist )!=tempSet.end() ){
// cout<<tempDist<<" ";
tempSet.erase(tempSet.find(tempDist));
}else{
//cout<<"aaaa"<<endl;
return 0; //不符合
}
}
}
}
cout<<endl;

for( i=0 ; i<6 ; i++ ){ //查找成功,打印结果
cout<<point[i]<<' ';
}
cout<<"bbbbbbb"<<endl;
return 1;
}

int temp;
temp=point
=dist2.top();
dist2.pop();

if(f(n+1)){
return 1;
}else{
point
=max-temp;
return f(n+1);
}
}

int main(){
int input;
for(int i=0;i<15;i++){
cin>>input;

dist.insert(input);
dist2.push(input);
}
point[0]=0;
max=point[1]=dist2.top();
dist2.pop();
point[2]=dist2.top();
dist2.pop();
// cout<<point[1]<<endl;
// cout<<point[2]<<endl;
f(3);

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: