Commit e4e68357 authored by royus's avatar royus

require_connect

parent 7c870e2c
/* solver.c */
/* Last Change: 2018/07/09 (Mon) 15:54:41. */
/* Last Change: 2018/07/16 (Mon) 10:05:50. */
#include<stdio.h>
/* #include<stdlib.h> */
......@@ -8,7 +8,8 @@
/* #include<math.h> */
/* #include<time.h> */
int board[8][72][72];
int board[8][72][72]={};
int avail[8][72][72]={};
int depth,height,width;
int lines;
//z,y,x
......@@ -91,9 +92,48 @@ int connected(int line){
return 0;
}
int available(int startx,int starty, int startz){
if(avail[startz][starty][startx]==-1)
return 1;
if(startx>0&&available(startx-1,starty,startz))
return 1;
if(starty>0&&available(startx,starty-1,startz))
return 1;
if(startz>0&&available(startx,starty,startz-1))
return 1;
if(startx<depth&&available(startx+1,starty,startz))
return 1;
if(starty<height&&available(startx,starty+1,startz))
return 1;
if(startz<width&&available(startx,starty,startz+1))
return 1;
return 0;
}
int connectable(int linea,int lineb){
//REQUIRED
int startx=-1,starty=-1,startz=-1,notfound=1;
int i,j,k;
for(i=0;i<depth;i++)
for(j=0;j<height;j++)
for(k=0;k<width;k++)
if(board[i][j][k]==-linea)
if(notfound){
notfound=0;
avail[i][j][k]=1;
startz=i;
starty=j;
startx=k;
}else
avail[i][j][k]=-1;
else if(board[i][j][k]==0||board[i][j][k]==lineb||board[i][j][k]==linea)
avail[i][j][k]=1;
else
avail[i][j][k]=0;
if(startx==-1||starty==-1||startz==-1){
printf("Error!\n");
return 0;
}
return available(startx,starty,startz);
}
void actuallyconnect(int num){
......@@ -153,7 +193,7 @@ void write(void){
}
int main(void){
reset();
/* reset(); */
read();
solve();
write();
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment