| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
 100
 101
 102
 103
 104
 105
 106
 107
 108
 109
 110
 111
 112
 113
 114
 115
 116
 117
 
 |  
#include<stdio.h>
#include<conio.h>
#include<stdio.h>
/*---------------déclaration_fonctions----------------*/
void cherche(int col);
void raser(int i, int j);
void supprimer(int i, int j;
void affich_tab(void);
int** allouer_chiquuier(void);
/*---------------variables_globales----------------*/
int **ech, *tab;
const dim=5;
/*---------------fonction_principale----------------*/
void main()
{
    int i,j;
    //clrsrc();
    tab=(int*)malloc(dim*sizeof(int)); /*allocation dyn du tab qui contient les
                                   resultats*/
 
    ech=allouer_echiquier(); /*alloca dyn echiquier*/
 
    for(i=0; i<dim; i++)
        for(j=0; j<dim; j++)
            ech[i][j]=dim;
 
    cherche(0);
    printf("fin programme");
    getch();
}
 
/*---------------definition_fonctions_----------------*/
 
int** allouer_echiquier(void)
{
    int i;
    ech=(int**)malloc(dim*sizeof(int*));
 
    for(i=0; i<dim; i++)
        *(ech+i)=(int*)malloc(dim*sizeof(int));
     return(ech);
}
void cherche(int col)
{
    int i;
 
    if(col=dim-1) 
    {
        for(i=0; i<dim;i++)
            if(ech[i][col]==dim)
            {
                tab[col]=i;
                affich_tab();
            }
    }
 
    else
    {
        for(i=0; i<dim;i++)
        {
            if(ech[i]col]==dim
            {
                tab[col]=i
                raser(i,col)
                recherche (col+1)
            }
            supprimer(i col)
        }
    }
}
 
void raser(int i intj)
{
    int l,c;
 
    for(c=j+1);c<dim;c++)
        if(ech[i][c]>j)
            ech[i][c]=j
 
    for(l=j+1, c=j+1; 1<dim; l++, c++ )
        if(ech[l][c]>j)
            ech[l][c]=j
 
    for (l=i-1,c=j+1; l>=0; l--,c++)
        if(ech[l][c]>j)
            ech[l][c]=j;
}
 
void affich_tab(void)
 
{
    int i;
    printf("solution");
    for(i=0;i<dim;i++)
    printf("(%d%d)",tab[i],i);
    printf("\n");
 
getch();
}
void supprimer (int i, int j)
 
{
    int l,c;
 
    for(c=j+1; c<dim;c++)
        if(ech[i][c]==j)
            ech[i][c]=dim;
 
    for(l=i+1,c=j+1); l<dim; l++,c++)
    if(ech[l][c]==j)
        ech[l][c]=dim;
 
    for(l=i-1,c=j+1;1>=0;l--,c++)
        if(ech[l][c]==j)
            ech[l][c]=dim;
} | 
Partager