Я получаю странное поведение, когда компилирую ту же программу в Release в VS2010. Если я запускаю программу из cmd.exe несколько раз, результаты становятся бессмысленными. Однако, если я запускаю программу в Debug, результат всегда одинаков.
При запуске новой командной строки программа снова выдает правильные выходные данные.
Есть идеи, что может быть причиной этого?
Редактировать: Код:
int main(int argc, char* argv[])
{
int* R;
int capacity;
if (argc < 2)
{
cerr << "Veuillez entrer le chemin du fichier d'entree" << endl;
return 1;
}
vector<BTS> stations;
LoadFromFile(argv[1], stations, capacity);
int count = 1;
if (argc == 3)
{
count = atoi(argv[2]);
}
clock_t startClock = clock();
R = new int[capacity+1];
for(int j = 0; j < count; j++)
{
memset(R, 0, capacity + 1);
for(unsigned int i=0; i < stations.size(); i++)
{
for(int j=capacity; j >= 0; j--)
{
if(j-stations[i].getNumberOfSubscribers() >= 0)
{
R[j] = max(stations[i].getRevenue() + R[j-stations[i].getNumberOfSubscribers()], R[j]);
}
}
}
}
// Print the results
cout << "Value : " << R[capacity] << endl;
cout << "Temps total : " << ((float)(clock() - startClock) / (float)CLOCKS_PER_SEC) << " s" << endl;
delete[] R;
return 0;
}
void LoadFromFile(std::string filePath, std::vector<BTS>& baseStations, int& capacity)
{
fstream source(filePath);
int numberOfStation;
source >> numberOfStation;
source >> capacity;
for (int i = 0; i < numberOfStation; i++)
{
int index, revenue, numberOfSuscribers;
source >> index;
source >> revenue;
source >> numberOfSuscribers;
BTS station = BTS(index, revenue, numberOfSuscribers);
baseStations.push_back(station);
}
source.close();
}
Остальная часть кода - только получатели. Теперь для файла, который я даю в качестве ввода:
10 25
1 7 6
2 4 4
3 7 6
4 2 1
5 7 8
6 9 10
7 4 5
8 10 10
9 1 1
10 10 10