Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Dijkstra [ Algorithme / Maths ] (king_moez)

mardi 10 avril 2007 à 20:13:29 | Dijkstra

king_moez

salut a tout , il y a t'il une personne qui peut me fournirune programme en C qui consiste a utiliser LA Methode de Dijkstra  

Merci d'avance

mardi 10 avril 2007 à 20:35:50 | Re : Dijkstra

BruNews

Administrateur CodeS-SourceS
Réponse acceptée !
Tu regardes ce qui te convient:
http://www.google.com/custom?domains=cppfrance.com&q=dijkstra&sa=Rechercher&sitesearch=cppfrance.com

ciao...
BruNews, MVP VC++

mercredi 11 avril 2007 à 21:02:31 | Re : Dijkstra

coucou747

Salut,

un truc en C qui peut ressembler (mais qui est probablement mauvais)

#include <stdio.h>
#include <stdlib.h>

typedef struct {
    char empty;
    char visited;
    int distance;
} Case;

#define MAXINT 2000

int __min(int a, int b){
    return (a<b)?a:b;
}

int distances_(Case ** c, int x, int y){
    int nombre=0;
    int i, j;
    int min=MAXINT;
    for (i=0;i<y;i++){
        for (j=0;j<x;j++){
            if (!c[i][j].visited){
                nombre++;
                if (c[i][j].distance<min){
                    min=c[i][j].distance;
                }
            }
        }
    }
    //printf("%d %d\n", min, nombre);

    for (i=0;i<y;i++){
        for (j=0;j<x;j++){
            if (c[i][j].distance==min){
                c[i][j].visited=1;
            }
        }
    }
    for (i=0;i<y-1;i++){
        for (j=0;j<x-1;j++){
            if (c[i][j].distance==min || c[i+1][j+1].distance==min){
                if (c[i+1][j].empty){
                    c[i+1][j].distance=__min(min+1, c[i+1][j].distance);
                }
                if (c[i][j+1].empty){
                    c[i][j+1].distance=__min(min+1, c[i][j+1].distance);
                }
            }
            if (c[i+1][j].distance==min || c[i][j+1].distance==min){
                if (c[i+1][j+1].empty){
                    c[i+1][j+1].distance=__min(min+1, c[i+1][j+1].distance);
                }
                if (c[i][j].empty){
                    c[i][j].distance=__min(min+1, c[i][j].distance);
                }
            }
        }
    }
    return nombre;
}

int distance(Case ** c, int x, int y){
    int max=0, r=1, i, j;
    while(r){
        r=distances_(c,x,y);
        //printf("%d\n", r);
    }
    for (i=0;i<y;i++){
        for (j=0;j<x;j++){
            if (c[i][j].distance>max){
                max=c[i][j].distance;
            }
        }
    }
    return max;
}

int main(){
    int x, y, i, j, c;
    Case ** cases;

    scanf("%d", &x);
    scanf("%d", &y);
    cases=(Case **)malloc(y*sizeof(Case *));
    for (i=0;i<y;i++){
        cases[i]=(Case *)malloc(x*sizeof(Case));
        for (j=0;j<x;j++){
            scanf("%d", &c);
            if (c==0){
                cases[i][j].empty=1;
                cases[i][j].visited=0;
                cases[i][j].distance=MAXINT;
            }else{
                cases[i][j].empty=0;
                cases[i][j].visited=0;
                cases[i][j].distance=0;
            }
            printf("%c", ((c==0)?' ':'#'));
        }
        printf("\n");
    }
    printf("result : %d\n\n", distance(cases, x, y));
    //on affiche les distances
    for (i=0;i<y;i++){
        for (j=0;j<x;j++){
            printf("%d ", cases[i][j].distance);
        }
        printf("\n");
    }
    return 0;
}



c'est une reponse a un sujet du concours fario (que j'ai faite pour m'entrainer)

tu peux t'en inspirer si tu veux... a mon avis, c'est pas trop ce que tu cherches...


In a dream, I saw me, drop dead... U was there, U cried... It was just a dream, if I die, U won't cry, maybe, U'll be happy

Mon site (articles sur la programmation et programmes)



Cette discussion est classé dans : dijkstra


Répondre à ce message

Sujets en rapport avec ce message

tri par comptage et tri de dijkstra. urgent!!! et au secours!!! [ par magicoz ] Bonjour, j'aurais voulu avoir de l'aide pour les tris par comptage et dijkstra.Je ne comprend pas le principe.Est-ce que quelqu'un peut m'expliquer et Dijkstra [ par Steph115 ] Bonjoru j'ai trovue ca sur les forums sur l'algo de dijkstra et il em demande pour faire la base de donnnes pour stocker les villes d'avoir un fichier Dijkstra [ par Steph115 ] Bonjour j'ai trouve ca sur le site sur l'algo de dijkstra et il me demande pour faire la base de donnnes pour stocker les villes d'avoir un fichier de programme de dijkstra [ par mery2 ] salut j ai deja envoyer un msg a ts le monde pour m aider pour faire un programme de l 'algorithme de dijkstra ms j ai pas reçu d'une reponce. est ce algorithme dijkstra [ par mery2 ] salut.j ai déja envoyer un message pour vous demander de m'aider pour realiser le programme en langage c de lalgorithme dijkstra et j n ai pas recu au algo de dijkstra et langage C [ par Ginolam1froide ] salut a tous !!j'ai un projet à faire en langage C qui doit permettre de trouver le plus court chemin entre deux aéroports.on choisit un avion (avec l codes sources Dijkstra et connexité forte [ par waffouta ] Saluuut tt le monde!!! Svp g besoins de votre aide. G 1 besoin urgent d 1 code pour l'algo de Djkstra et 1 code pour un prog ki reconné 1 graphe forte


Nos sponsors

Sondage...

CalendriCode

Décembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,250 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.