Un problema bonito y "raro"...
Ahí va un programa que vale para cualquiera N carcateres, (hasta 1000), metidos por teclado, hasta que se mete el fin de fichero... (no incluye separadores entre los caracteres)
- #include <iostream> 
- #include <algorithm> // min, max 
-   
- using namespace std; 
-   
- #define MAX 1000 
-   
- /* 
-   
-   
-   P : N >= 0 
-   Q : count = #i : 0 <= i < N-1: twin(V,N,i) 
-   
-   where twin(V,N,i) ::= V[i]==V[i+1]) && 
-                         ((i==0) ||  
-                         ((i>0) and V[i]!=V[i-1]) || 
-                         (i>1) and V[i-1]==V[i-2]) 
-   
- */ 
- int twins(const int V[MAX], const int N) 
- { 
-   int n,count; 
-   for(n=count=0; n<N-1 ; n+=1+(V[n]==V[n+1])) 
-     count += (V[n]==V[n+1]) ;  
-   return count; 
- } 
-   
- int main(int argc, char *args[]) 
- { 
-   char c; 
-   int N; 
-   int V[MAX]; 
-   for ( N=0  ; (N<MAX) && (cin >> c) ; N++ )  V[N]= c; 
-   cout << N << " " << twins(V,N) << endl; 
-   return 0; 
- } 
-   
- /* 
-   
- 0           n                             N 
- +-----+-----+-----+-----+-----+-...-+-----+ 
- |  a  |  a  |  a  |  b  |  b  |     |  r  | 
- +-----+-----+-----+-----+-----+-...-+-----+ 
-   
- (Bizarre...) 
-   
-   I : Q[N/n] and 
-       0 <= n <= N  
-         
-   B : n<N-1 
-   C(n) : N-n >= 0  
-   step : n = n + (1 + V[i]==V[i+1]) 
-   O(n) (linear) 
-   
- */ 
El primer parametro da el numero de caracteres leidos (N) el segundo, el numero de "parejas" según el criterio del problema
aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooo*
(La linea tiene 46 caracteres y 15 parejas)
Y la bonita. Es 
importante el * porque cin no toma separadores y saldrian más parejas de las normales, juntando los renglones.
aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooo*
oooaaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnn*
nnnoooaaabbbcccdddeeefffggghhhiiijjjkkklllmmm*
mmmnnnoooaaabbbcccdddeeefffggghhhiiijjjkkklll*
lllmmmnnnoooaaabbbcccdddeeefffggghhhiiijjjkkk*
kkklllmmmnnnoooaaabbbcccdddeeefffggghhhiiijjj*
jjjkkklllmmmnnnoooaaabbbcccdddeeefffggghhhiii*
iiijjjkkklllmmmnnnoooaaabbbcccdddeeefffggghhh*
hhhiiijjjkkklllmmmnnnoooaaabbbcccdddeeefffggg*
ggghhhiiijjjkkklllmmmnnnoooaaabbbcccdddeeefff*
fffggghhhiiijjjkkklllmmmnnnoooaaabbbcccdddeee*
eeefffggghhhiiijjjkkklllmmmnnnoooaaabbbcccddd*
dddeeefffggghhhiiijjjkkklllmmmnnnoooaaabbbccc*
cccdddeeefffggghhhiiijjjkkklllmmmnnnoooaaabbb*
bbbcccdddeeefffggghhhiiijjjkkklllmmmnnnoooaaa*
15 lineas por 15 parejas da 225 parejas