이것이 내가하는 일입니다. 배열 (또는 벡터), V가 있고 오름차순으로 정렬하고 있습니다. 이상 또는 위치 i
에있을 것입니다 a
을 대상으로하는 동일 적은. (처음 i = 0
)대상보다 작거나 같은 배열에서 최대 수 찾기
while (V[i] <= a && i < V.size()) { i++; }
i--;
내가 Codechef에 대한 질문에 코드의이 부분을 사용하고 AC를 얻고는, 그러나 이전에 가장 많은 수의 I 이것을 사용하고 그것을 잘못하고 있었다.
while (V[i+1] <= a && i < V.size()-1) i++;
둘은 본질적으로 동일한 작업을 수행하지 않습니까? 왜 내가 처음이 아닌 두 번째로 WA를 얻는거야? 그들이 다른 테스트 케이스를 지적 해 주시겠습니까? 테스트 케이스, 예를 들어
:
V =
i = 2
함께 = 11
양단부 5,7,10,12.
내가 얻고 또 다른 유사한 문제
이있다 : I 정렬 된 값의 또 다른 목록을내가 통과하고 V2를 말한다. 각 값 x에 대해 x보다 작거나 같은 V에서 가장 높은 숫자를 찾으려고합니다.
while (V[i] <= x && i < V.size()) {
i++;
}
i--;
V2를 통해 반복 할 때마다, 내가 영으로 난의 값을 설정하지 않은 대신 내가 전에 어디에서 계속 :이 내가 이전에하던 것입니다.
을 (V2 정렬 되었기 때문에) 내가 가진 그래서 경우 :
내 코드는 인덱스 1을 반환V = 5 7 10 12
V2 = 7 8 10 11 13
, 1, 2, 2, 3. 그럼에도 불구하고 나는 이것을 가지고 WA를 얻고 있었다. :/
하지만 V2를 반복 할 때마다 i = 0으로 할 때 AC를 얻었습니다. 이제는 느리게 진행되는데, 처음에하고 싶지 않았지만, i를 0으로 재설정하지 않으면 왜 작동하지 않는지 전혀 알 수 없습니다.
도움말, 얘들 아? : 3
편집 : 여기서 값을 바꿀 수 있습니다.
vector <int> V1 = {1,2,3};
int target = 5;
int index = 0;
while (V1[index] <= target && index < V1.size()) { index++; }
index--;
cout << index << endl;
index = 0;
while (V1[index+1] <= target && index < V1.size()-1) index++;
cout << index << endl;
이 질문은 항상 제공된 각 테스트 케이스에 대해 동일한 대답을 반환하는 것으로 보입니다.
두 번째 코드는'i = 0'을 검사하지 않으므로 그들은 같지 않습니다 –
음 .. 테스트 케이스를 찾으실 수 있습니까? – SinByCos
'V = 5,7,10,12''a = 6'인가? –