begin process at 2012 02 12 08:39:31
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Algorithme

 > 

Maths

 > 

Dijkstra


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Dijkstra

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
mercredi 11 avril 2007 à 21:02:31 | Re : Dijkstra

coucou747

Administrateur CodeS-SourceS
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ée 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

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), 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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,437 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales