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 |
map 我崩溃了,为啥有的查不到呢比如第一个例子,明明遍历map的时候有(1,1),(0,0)这两个点,但是为啥find不到呢。。。 #include <stdio.h> #include <string.h> #include <map> using namespace std; struct Point { int x; int y; }point[2010],p1,p2; struct pointCmp { bool operator() (const Point p1,const Point p2) const { if(p1.x==p2.x) return p1.y-p2.y; return p1.x-p2.x; } }; int main() { int n,count,i,j; map<Point,int,pointCmp> mapPoint; map<Point,int,pointCmp>::iterator iter1,iter2; while(scanf("%d",&n)!=EOF) { for(i=0;i<n;i++) { scanf("%d%d",&point[i].x,&point[i].y); printf("%d %d %d\n",point[i].x,point[i].y,i); mapPoint.insert( make_pair ((Point)point[i],i)); } for(iter1=mapPoint.begin();iter1!=mapPoint.end();iter1++) { printf("%d--%d--%d--\n",iter1->first.x,iter1->first.y,iter1->second); } count=0; for(i=0;i<n;i++) { for(j=i+1;j<n;j++) { p1.x=point[i].x+point[j].x-point[i].y+point[j].y; p1.y=point[i].x-point[j].x+point[i].y+point[j].y; p2.x=point[i].x+point[j].x+point[i].y-point[j].y; p2.y=point[j].x-point[i].x+point[i].y+point[j].y; if(p1.x%2==0&&p1.y%2==0&&p2.x%2==0&&p2.y%2==0) { p1.x/=2; p1.y/=2; p2.x/=2; p2.y/=2; printf("%d %d %d %d\n",p1.x,p1.y,p2.x,p2.y); for(iter1=mapPoint.begin();iter1!=mapPoint.end();iter1++) { printf("%d %d %d\n",iter1->first.x,iter1->first.y,iter1->second); } printf("%d-----%d\n",p2.x,p2.y); iter1=mapPoint.find((Point)p1); if(iter1!=mapPoint.end()) printf("cc\n"); iter2=mapPoint.find((Point)p2); if(iter2!=mapPoint.end()) printf("dd\n"); ///if(iter1!=mapPoint.end()) printf("dd\n"); if(iter1!=mapPoint.end()&&iter2!=mapPoint.end()) count++; } } } printf("%d\n",count/2); } return 0; } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator