Código
typedef struct { int hijo;// este es un bool de si tiene o no hijos int valor;//valor de la posicion struct Numero* hijo[101];//los hijos(son 101 porque estoy haciendo un trie de 100num) int existe;//si ya se proceso este hijo.. o si hay data adentro }Numero;
que es lo que quiero hacer con esta estructura?
quiero todas las combinaciones que se hicieron en una base de datos...
de 3 numeros, de 2 numeros y de 1 numero... con numeros del 1-100..
lo que quiero es tomar las jugadas, agregarlas o aumentarle el valor guardado...
lo que hago es sacar los datos, los ordeno de menor a mayor, para que no aparescan permutaciones, solo combinaciones...
mi main tiene esto:
Código
int main() { Numero temp[101]; Numero *combinaciones=temp; int cn;//cantidad de numeros; int tempi[cn+1]; int c1; int c; int *numeros=tempi; for(c1=0;c1<cn;c1++) organizar(&numeros,cn); agregar(&(*combinaciones)[(*numeros)[0]],&numeros,1,cn,100); return 0; }
ok, les explico hasta aqui(que funciona):
tengo 5 numeros:
20 15 3 85 63
los organizo de menor a mayor:
3 15 20 63 85
quiero agregarla a el trie, entonces entro al arreglo
entro al metodo por el primero, en este el 3
el metodo recursivo es el siguiente:
Código
void agregar(Numero* n,int* valores[],int posicion,int length,int monto) { //aqui termina la recursividad... cuando llego a la ultima posicion del arreglo if(posicion==length) { return; } //digo que ese hijo existe n->existe=1; //si no quedan mas hijos.. le sumo el monto que tengo if(length==posicion+1) n->valor+=monto;/ else /ese else es de prueba; posicion++; //aqui explota.. nose cual es la sintaxis para llamar a un hijo de mi trie... agregar(&((*n).(*hijo)[(*valores)[posicion]])),&(*valores),posicion,length,monto); //de manera corta les digo: quiero enviar a un metodo una structura puntero array.... /*manera larga: el hijo N, tiene mas hijos (100), yo quiero entrar al numero que le toca, por ejemplo si yo entre por el 3, debe seguir al 15... entonces deberia enviar a n[15]... entonces esto explota y no encuentro nada como mejorar... si pueden ayudarme con esto( creo que me falta mas referencia o algo asi...*/ }
//el metodo que uso de organizar es el siguiente:
Código
void organizar(int* array[],int size) { int c; int c1; int temp; int temppos; for(c1=0;c1<size;c1++) { temp=101; for(c=c1;c<size;c++) { if (temp>(*array)[c]) { temp=(*array)[c]; temppos=c; } } (*array)[temppos]=(*array)[c1]; (*array)[c1]=temp; } for(c=0;c<size;c++) }
gracias...