| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
最简单的编程方法,但是一直TLE,大牛能说说思路么?#include <iostream>
#include <fstream>
using namespace std;
int num;
struct point{
int x,y;
} p[1001];
int dis(int a,int b){
int x1=p[a].x;int x2=p[b].x;int y1=p[a].y;int y2=p[b].y;
return ((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
}
bool square(int a,int b,int c,int d){ // ab||cd
if(dis(a,b)==dis(b,c)&&dis(b,c)==dis(c,d)&&dis(c,d)==dis(d,a)&&dis(a,c)==dis(b,d))return true;
else return false;
}
bool check(int a,int b,int c,int d){
if(square(a,b,c,d)||square(a,c,b,d)||square(a,b,d,c))return true;
return false;
}
void main(){
// ifstream cin("data.txt");
while(1){
cin>>num;
if(num==0)break;
for(int i=0;i<num;i++){
cin>>p[i].x>>p[i].y;
}
int total=0;
for(i=0;i<num-3;i++){
for(int j=i+1;j<num-2;j++){
for(int k=j+1;k<num-1;k++){
for(int l=k+1;l<num;l++){
if(check(i,j,k,l))total++;
}
}
}
}
cout<<total<<endl;
}
}
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator