Pagini recente » Cod sursa (job #2160353) | Cod sursa (job #2798843) | Cod sursa (job #1702098) | Cod sursa (job #2492277) | Cod sursa (job #1010966)
#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;
}