braveduck 문제 질문입니다. 구조체를 하나 만들어서 위치와 방문 여부를 저장하고 있습니다. 초기 시작 좌표를 넘겨주고 그곳에서 방문 할 수 있는 모든 돌을 스택에 저장한 뒤에 하나씩 빼면서 다시 방문 가능한 돌을 계속 스택에 넣고 있는데요 왜 오답인지 잘 모르겠습니다 도와주시면 감사하겠습니다.. 목적지 좌표도 돌이라고 생각하고 넣었습니다.
#include <iostream>#include <stack>#include <math.h>usingnamespacestd;typedefstructpoint{intx;inty;boolvisited=false;}Point;Pointstone[101];intN;doubleJ;intend_x,end_y;doubledis(intx,inty,intend_x,intend_y){doubleres=((x-end_x)*(x-end_x))+((y-end_y)*(y-end_y));returnsqrt(res);}boolRun(intx,inty){stack<Point>s;for(inti=0;i<=N;i++){if(J>=dis(x,y,stone[i].x,stone[i].y)){stone[i].visited=1;s.push(stone[i]);}}while(s.size()>0){Pointtemp=s.top();s.pop();if(temp.x==end_x&&temp.y==end_y)returntrue;for(inti=0;i<=N;i++){if(!stone[i].visited){if(J>=dis(temp.x,temp.y,stone[i].x,stone[i].y)){stone[i].visited=1;s.push(stone[i]);}}}}returnfalse;}intmain(intargc,char**argv){intT;inttest_case;intx,y;inttemp_x,temp_y;intcount;intAnswer;//freopen("input.txt", "r", stdin);setbuf(stdout,NULL);cin>>T;for(test_case=1;test_case<=T;++test_case){cin>>J;cin>>x>>y>>end_x>>end_y;cin>>N;for(inti=0;i<N;++i){cin>>temp_x>>temp_y;stone[i].x=temp_x;stone[i].y=temp_y;}stone[N].x=end_x;stone[N].y=end_y;Answer=Run(x,y);if(Answer)printf("YES\n");elseprintf("NO\n");for(inti=0;i<=N;i++){stone[i].x=0;stone[i].y=0;}}return0;// 정상종료 시 반드시 0을 리턴해야 합니다.}
9년 전
0개의 댓글이 있습니다.
정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면
온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야
합니다. 현재 문제를 푸셨습니다.
tkdi000
9년 전