배열의 3 쌍의 길이로 나눌 수있는 쌍의 수를 계산하는 간단한 프로그램을 만들고 값은 사용자가 결정합니다.중첩 루프의 최적화 개선
이제 내 코드는 완벽합니다. 그러나, 나는 단지 컴파일 시간을 단축시키는 결과를 산출하는 더 빠른 방법이 있는지 확인하고자한다.
배열의 길이가 10^4 이하이므로 컴파일러는 100ms 미만을 소요합니다. 그러나 10^5까지 증가하므로 1000ms까지 올라갑니다. 왜 이렇게됩니까? 그리고 속도를 향상시키는 방법?
#include <iostream>
using namespace std;
int main()
{
int N, i, b;
b = 0;
cin >> N;
unsigned int j = 0;
std::vector<unsigned int> a(N);
for (j = 0; j < N; j++) {
cin >> a[j];
if (j == 0) {
}
else {
for (i = j - 1; i >= 0; i = i - 1) {
if ((a[j] + a[i]) % 3 == 0) {
b++;
}
}
}
}
cout << b;
return 0;
}
코드가 올바르게 작동하고 코드를 개선하기 만하면 [codereview.stackexchange.com] (https://codereview.stackexchange.com/)에 대한 질문을 고려하십시오. –
사이드 노트. 코드를 최적화하면 '실행 시간'이 향상 될 것입니다. 컴파일 시간은 일반적으로 프로그램을 빌드 할 때 한 번만 발생해야하기 때문에 요소가 아닙니다. :) –
https://stackoverflow.com/questions/1887097/why-arent-variable-length-arrays-part-of-the -c-standard – Tyger