Hola Sonia.
No he tenido mucho tiempo, porque me voy a ver el partido del mundial de España-Irán .
Echa un vistazo a esto... (No he probado, mañana edito una respuesta más elaborada, e implemento el programa principal, aunque no lo pide)
No he tenido mucho tiempo, porque me voy a ver el partido del mundial de España-Irán .
Echa un vistazo a esto... (No he probado, mañana edito una respuesta más elaborada, e implemento el programa principal, aunque no lo pide)
Código (c) [Seleccionar]
#define MAX 10000
#include <assert.h>
/* Static memory implementation */
typedef struct {
int V[MAX];
int N;
} CycleSeq, *pCycleSeq;
/* Comment: Compare cannonical forms */
int SameCycle(CycleSeq *A, CycleSeq *B)
{
if (A->N != B->N) return 0;
if (A->N == 0 ) return 1 ;
// otherwise
assert((A->N == B->N) && A->N );
int n ;
int mA, mB;
for (mA=mB=0, n = 1 ; n < A->N ; n++)
{
if (A->V[mA]>A->V[n]) mA = n ;
if (B->V[mB]>B->V[n]) mB = n ;
};
// mA mB holds minimum positions;
// count coincidences in cannonical form.
int count;
for(count=0; (count < A->N) && (A->V[mA]==B->V[mB]); mA=(mA+1)% A->N,mB=(mB+1)%A->N )
count++;
return count == A->N;
}