Pagini recente » Cod sursa (job #899348) | Cod sursa (job #155165) | Cod sursa (job #990504) | Cod sursa (job #831783) | Cod sursa (job #337923)
Cod sursa(job #337923)
#include<stdio.h>
#include<conio.h>
#include<iostream.h>
int t[11][11][32]={0};
int lep[100][6][32]={0};
int el[2][32]={0};
int ak[2][32]={0};
int megoldas=0;
FILE *x=fopen("apro.txt","w");
int ok(int szint)/////////////////////
{ //
//
int db=0; //
int zz=0; //
for(int i=2;i<9;i++) //
for(int j=2;j<9;j++) //
{ //
if(t[i][j][szint]==1)db++; //
if(db>1){zz=0;return 0;} //
} //
return 1; //
//
}/////////////////////////////////////
int masol(int szint,int x)
{
if(megoldas)return 1;
for(int ii=0;ii<11;ii++)for(int jj=0;jj<11;jj++)t[ii][jj][szint+1]=t[ii][jj][szint];
t[lep[x][0][szint]][lep[x][1][szint]][szint+1]=0;
t[lep[x][2][szint]][lep[x][3][szint]][szint+1]=0;
t[lep[x][4][szint]][lep[x][5][szint]][szint+1]=1;
ak[0][szint]=11*lep[x][0][szint]+lep[x][1][szint]-21;
ak[1][szint]=11*lep[x][4][szint]+lep[x][5][szint]-21;
fprintf(x," %d %d %d ",szint,ak[0][szint],ak[1][szint]);
return 1;
}
int keres(int szint)/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
{
if(megoldas)return 1;
int e=0;
for(int ii=2;ii<9;ii++)for(int jj=2;jj<9;jj++)if(t[ii][jj][szint]==0)
{if(t[ii-2][jj][szint]==1&&t[ii-1][jj][szint]==1){lep[e][0][szint]=ii-2;lep[e][1][szint]=jj;lep[e][2][szint]=ii-1;lep[e][3][szint]=jj;lep[e][4][szint]=ii;lep[e][5][szint]=jj;e++;}
if(t[ii+2][jj][szint]==1&&t[ii+1][jj][szint]==1){lep[e][0][szint]=ii+2;lep[e][1][szint]=jj;lep[e][2][szint]=ii+1;lep[e][3][szint]=jj;lep[e][4][szint]=ii;lep[e][5][szint]=jj;e++;}
if(t[ii][jj-2][szint]==1&&t[ii][jj-1][szint]==1){lep[e][0][szint]=ii;lep[e][1][szint]=jj-2;lep[e][2][szint]=ii;lep[e][3][szint]=jj-1;lep[e][4][szint]=ii;lep[e][5][szint]=jj;e++;}
if(t[ii][jj+2][szint]==1&&t[ii][jj+1][szint]==1){lep[e][0][szint]=ii;lep[e][1][szint]=jj+2;lep[e][2][szint]=ii;lep[e][3][szint]=jj+1;lep[e][4][szint]=ii;lep[e][5][szint]=jj;e++;}}
el[0][szint]=0;el[1][szint]=e;
if(e==0&&ok(szint)){megoldas=1;
return 1;
}
return 0;
}/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
int lepes(int &szint)
{
if(megoldas)return 1;
if(el[0][szint]==el[1][szint])lepes(szint-1);
masol(szint,el[0][szint]++); //elvegzi a leptetest a lepeseknel;
keres(szint+1);
if(el[1][szint+1]!=0)
lepes(szint+1);
else
{
ok(szint+1);
if(megoldas)
return 1;
else lepes(szint);
}
return 0;
}
int main()
{
FILE *f=fopen("inkasakk.txt","r");
FILE *g=fopen("megoldas.txt","w");
int n,m,ii,jj;
//fscanf(f,"%d%d",&n,&m);n=3;m=3;
for(ii=0;ii<11;ii++)for(jj=0;jj<11;jj++)t[ii][jj][0]=3;
for(ii=2;ii<9;ii++)for(jj=4;jj<7;jj++){t[ii][jj][0]=1;t[jj][ii][0]=1;}
t[n+2][m+2][0]=0;
keres(0);
lepes(0);
for(ii=0;ii<32;ii++)
{
fprintf(g," %d %d ",ak[0][ii],ak[1][ii]);
printf(" %d %d ",ak[0][ii],ak[1][ii]);
}
if(megoldas)return 1;
return 0;
}