[C++] Program zeruje tablice

Nie bardzo wiedziałem jak nazwać temat, gdyż mam dość nietypowy problem.

Napisałem algorytm, który znajduje rozwiązanie dla problemu komiwojażera. Algorytm szukający rozwiązanie działa w pętli while, pseudokod wygląda to tak

while (kryterium_spełnione)

{


losujRozwiazanie

sprawdzCzyNoweRozwiazanieJestLepsze

JesliLepszeZapiszDoTablicy


}


wyswietlRozwiazanie

Problem w tym, że algorytm nie podaje znalezionego rozwiazania tylko wszystkie elementy tablicy się zerują ALE jeśli do algorytmu dodać wyswietlanie wszystkich znalezionych rozwiazan w petli while to na koncu wyswietli pożądane rozwiazanie. Kod programu wygląda tak:

while ( ((koniec-start)/60000.0) < time ) // dopóki czas wykonywania poniżej time

	{

		k0=rand()%(N-1) + 1; // losuje liczbę w przedziale od 0 do N-1

		swap(k0, k0+1, perm);

		obnizTabu();


			if (LT[k0][k0+1]==0){

				kopiuj(perm, bestSolution); // jesli nie jest na liscie Tabu dodaj jako rozwiazanie

				aktualizacjaLT(k0, k0+1, czasT);

			}

			else if (liczKoszt(perm) < liczKoszt(bestSolution) ){

				kopiuj(perm, bestSolution);

			}



		koniec = clock();

[b][size=150] cout << liczKoszt(bestSolution) << endl; // jeśli to usunę to poniżej w tablicy rozwiazan są same zera[/size][/b]

		i++;

	}


	cout << "kryterium dla bestSolution wynosi " << liczKoszt(bestSolution) << endl;

Kto ma pomysł o co chodzi?

k0=rand()%(N-1) + 1; // losuje liczbę w przedziale od 0 do N-1 // bzdura od 1 do N-1

reszta wygląda w porządku.

Z losowaniem właśnie był problem i to jeszcze inny, oprócz tego że nie losowałem tego co chciałem to wybrałem zły zakres i potem wychodziłem poza tablicę i pobierał mi zera z pamięci.

Już działa.

Co do losowania, przedział od 0 do N-2 uzyskam, tak:

k0=rand()%(N-1)

?

zgadza się.