Cześć Piszę rozwiązanie problemu QAP metoda branch and bound
i otóż napisałem taką funkcję algorytmu:

bool BB(Qap a, int dystans=0, int rek=0)//0-nie spr 1-którsza 2- dluższa
{
	cout << "wykonanie BB rek = " <<rek<<" ";
	if(rek==6) 
	{
		for(int i=0; i<a.n;i++)
		{
			a.permutacja[i]=a.filtracja[i];
			cout << a.permutacja[i];
		}		
		cout<<endl;
		return true;
	}
	srand(time(0));
	int exit=0;
	for(int i=0; i<a.n;i++)
	{
		if(a.A1[a.permutacja[0]][i]==1 || a.A1[a.permutacja[0]][i]==2)
			exit++;
	}
	if(exit==6) return true;
	int szczesliwy_numerek =rand() % a.n;  /* losowanie liczby z zakresu <0,n-1> */
	if(a.permutacja[rek]!=szczesliwy_numerek)
	{	
		if(a.A1[a.permutacja[rek]][szczesliwy_numerek]==1 || a.A1[a.permutacja[rek]][szczesliwy_numerek]==2)
			return true;

		dystans+=a.tablica[a.permutacja[rek]][szczesliwy_numerek];
		if(a.droga < dystans)
		{
			a.A1[a.permutacja[rek]][szczesliwy_numerek]=1;
			rek+=1;
			a.filtracja[rek]=szczesliwy_numerek; //TUTAJ zapamietujemy droge
			if(BB(a, rek+1,dystans)) return true;
		}		
	}
} 

która wykonuje się na klasie QAP

nie działa... jest to funkcja rekurencyjna i nie wiem dlaczego nie wykonuje się w głąb