1504번 - 특정한 최단 경로
다익스트라 알고리즘에서
시작 노드부터 i번째 노드까지 최단 경로를 D[i] 배열로 표현하고 INT_MAX로 초기화 시켰는데요
마지막에 최단 경로가 존재하는지 판별하는 부분을 간단하게 하고자
A =( R1[v1] + R2[v2] + R3[N], R1[v2] + R3[v1] + R2[N]); if (A1 >= INT_MAX || A1 < 0) cout << -1; else cout << A;
이런 식으로 했더니 틀리더라구요
INT형 변수에 담긴 INT_MAX 끼리 더하면(즉 INT_MAX + INT_MAX)
다른 INT형 변수에 저장하기전에 어떻게 존재하나요?
저장한 후에는 음의 값을 가지는 쓰레기값이 되는 것으로 알고 있습니다.
그리고 이런 특성을 고려했을 때 코드를 더 간단하게 할 수 없을까요?
rvalue라고 하더라도 자료형은 있습니다.
INT_MAX 정의부분을 봐야 알겠지만 int 타입이라면 + 연산 전에 더 큰 타입으로 명시적 캐스팅을 하지 않으면 산술 오버플로가 발생하겠죠
댓글을 작성하려면 로그인해야 합니다.
dmzld 3년 전
다익스트라 알고리즘에서
시작 노드부터 i번째 노드까지 최단 경로를 D[i] 배열로 표현하고 INT_MAX로 초기화 시켰는데요
마지막에 최단 경로가 존재하는지 판별하는 부분을 간단하게 하고자
A =( R1[v1] + R2[v2] + R3[N], R1[v2] + R3[v1] + R2[N]);
if (A1 >= INT_MAX || A1 < 0)
cout << -1;
else
cout << A;
이런 식으로 했더니 틀리더라구요
INT형 변수에 담긴 INT_MAX 끼리 더하면(즉 INT_MAX + INT_MAX)
다른 INT형 변수에 저장하기전에 어떻게 존재하나요?
저장한 후에는 음의 값을 가지는 쓰레기값이 되는 것으로 알고 있습니다.
그리고 이런 특성을 고려했을 때 코드를 더 간단하게 할 수 없을까요?