Cod sursa(job #1010966)

Utilizator nod_softwareBudisteanu Ionut Alexandru nod_software Data 15 octombrie 2013 23:19:59
Problema Generare de permutari Scor 100
Compilator c Status done
Runda Arhiva educationala Marime 1.48 kb
#include <stdio.h>
#include <stdlib.h>

struct TNumber
{
    int iValue;
    int iVisited;
};

typedef struct TNumber TNumber;

//----------------------------------------------
void PrintSolution(TNumber vDataArray[], int iLength, FILE*fOut)
{
    int i;
    for (i=0; i<iLength; i++)
        fprintf(fOut,"%d ",vDataArray[i].iValue+1);
    fprintf(fOut,"\n");
}
//----------------------------------------------
void back(TNumber vDataArray[], int iCurrentLevel, int iLength, FILE * fOut)
{
    if (iCurrentLevel==iLength)
    {
        PrintSolution(vDataArray,iCurrentLevel,fOut);
    } else
    {
        int i;

        for (i=0; i<iLength; i++)
            if (vDataArray[i].iVisited==0)
            {
                vDataArray[iCurrentLevel].iValue=i;
                vDataArray[i].iVisited=1;
                back(vDataArray,iCurrentLevel+1,iLength,fOut);
                vDataArray[i].iVisited=0;
            }
    }
}
//----------------------------------------------
void ReadData(int *iLength)
{
    FILE * fin = fopen("permutari.in","r");

    fscanf(fin,"%d",iLength);

    fclose(fin);
}
//----------------------------------------------
int main()
{
    int iLength;
    TNumber vDataArray[9];

    ReadData(&iLength);

    int i;
    for (i=0; i<9; i++)
        vDataArray[i].iValue=0,vDataArray[i].iVisited=0;

    FILE * fOut = fopen("permutari.out","w");

    back(vDataArray,0,iLength,fOut);

    fclose(fOut);

    return 0;
}