Strano. Col VC++ 2008 espresso a me protesta su questo pezzo di codice. Il che a prima vista mi sembra normale dal momento che la variabile r è definita in un blocco di codice e nell'altro no.
(Tra l'altro come dovrebbero essere annidati i for? )
codice:
void HashTable::LCS(string s, string a, int k)
{
    int* l;					
    l=new int[s.size()*a.size()];
   // qui è definita
    for(int r=0;r<=s.size();r++) 
	for(int c=0;c<=a.size();c++)
			l[r*a.size()+c]=0; 

		for(  r=1;r<=s.size();r++) // qui no.		
			for( int c=1;c<=a.size();c++) { 
			if(s[r-1]==a[c-1])		
				l[r*a.size()+c]=l[(r-1)*a.size()+(c-1)]+1; 
			else if(l[r*a.size()+(c-1)] > l[(r-1)*a.size()+c]) 
				l[r*a.size()+c]=l[r*a.size()+(c-1)]; 
			else				
				l[r*a.size()+c]=l[(r-1)*a.size()+c];
			}

			 r=s.size(); int c=a.size();  
			a_lcs[k]=l[r*a.size()+c];	
}