Venía así definida.
Muchas gracias ya me han ayudado
Muchas gracias ya me han ayudado
![;D ;D](https://forum.elhacker.net/Smileys/navidad/grin.gif)
Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.
Mostrar Mensajes Menúdata Grafo a = GVacio | Nodo a (Grafo a) | Arco a a (Grafo a) deriving (Show, Eq)
adyacentes :: (Eq a) => a -> a -> Grafo a -> Bool
adyacentes x y (Arco u v g) = x==u && y==v || x==v && y==u || adyacentes x y g
adyacentes _ _ _ = False
noadylista :: (Eq a) => Grafo a -> a -> [a]
noadylista GVacio _ = []
noadylista (Arco x y g) a = if ((adyacentes a x g))
then (noadylista (Nodo y g) a)
else x:(noadylista (Nodo y g) a)
#include <stdio.h>
#include <math.h>
#define length(x) (sizeof(x)/sizeof(x[0]))
static int V[]={1,2,3,4},aux[]={0,0,0,0},ex[]={}; //ex: vector que contiene al ultimo elemento expandido
//aux: deberia contener los elementos del subconjunto al que se le debe aplicar la funcion suma
int factorial(int M){
int num=M;
int factor = 1;
while (num > 0){
factor = num * factor;
num--;
}
return factor;
}
int suma(){
int sum=0,j=0;
while (j<length(aux)){
sum=sum+aux[j];
j++;
}
return sum;
}
int main() {
int S=5,i=0,T=0,cont=0,j,b=0,ncomb=0,k,v;
int nc[]={0,0,0,0}; //vector que contiene el numero de combinaciones para subconjuntos de 1,2,3 y 4 elementos
for (k=1;k<=length(V);k++){
ncomb=factorial(length(V))/(factorial(k)*factorial(length(V)-k));
printf("Numero de combinaciones con %d elementos: %d\n",k,ncomb);
nc[k-1]=ncomb;
}
do{
v=length(V);
if(T>v || suma()>S){ //Nodo fracaso
aux[i]=0;
i--;
T--;
nc[k]=nc[k-1];
}
else if(suma()==S){ // nodo solución
cont++;
aux[i]=0;
i--;
T--;
nc[k]=nc[k-1];
}
if(suma()<S) //nodo problema
{
T++;
i++;
}
if(i==1 && aux[0]==V[length(V)-1]){ //Nodo solucion
printf("Nº de soluciones %d\n",cont);
b=1;
exit(1);
}
ex[i]=V[i];
for(j=0;j<i;j++){
aux[j]=V[j];
aux[i-1]=ex[i+1]++;
}
}while(b==0);
}