diff --git a/a.out b/a.out new file mode 100755 index 0000000000000000000000000000000000000000..15c133907f25ae24d231d30504e72c5653c973ec Binary files /dev/null and b/a.out differ diff --git a/io.c b/io.c index ac1b2d71f99e036ad4fded6f6af78c777e6a27e4..033d38ecc7b339503b4f6c7f8aa4ace631c9b230 100644 --- a/io.c +++ b/io.c @@ -1,8 +1,7 @@ /* io.c */ -/* Last Change: 2019/05/21 (Tue) 13:57:18. */ +/* Last Change: 2019/05/25 (Sat) 18:11:46. */ #include -#include #include"io.h" short int W=MAXW, H=MAXH; // (問題で設定された) 盤面サイズ上限 @@ -17,8 +16,8 @@ void reset_parameters(void){ for(j=0;j<5;j++) for(k=0;k<3;k++) block_data[i][j][k]=-1; - for(i=0;i<72;i++) - for(j=0;j<72;j++) + for(i=0;i72||W<=0) + if(W>MAXW||W<=0) printf("Error: width\n"); scanf(" %c",&c); //X scanf(" %hd",&H); - if(H>72||H<=0) + if(H>MAXH||H<=0) printf("Error: height\n"); scanf(" %s",str); //BLOCK_NUM scanf(" %hd",&blocks); @@ -92,19 +91,6 @@ void read_problem(void){ return; } -void convert_answer(void){ - int i,j; - for(i=0;i0,その他は自然数に変換される -// (アルゴリズム的に必要であれば使ってください) -// (私は壁(端点ではないマス)をSHRT_MINで,配線を負の数で実装してます) void reset_parameters(void); // read_problem に内包 void read_problem(void); -void convert_answer(void); void print_answer(void); #endif // _IO_H_ diff --git a/main.c b/main.c index 3952e52cbc65dc28d030e4b0a206301aee88da05..95d7aa9658a643ef5f65aa164d22edc478ac8ec0 100644 --- a/main.c +++ b/main.c @@ -1,12 +1,12 @@ /* main.c */ -/* Last Change: 2019/05/21 (Tue) 14:03:16. */ +/* Last Change: 2019/05/21 (Tue) 14:44:03. */ #include"io.h" +#include"solver.h" int main(void){ read_problem(); - // solver(); - convert_answer(); + solver(); print_answer(); return 0; diff --git a/solver.c b/solver.c index d7262da3c415a994328e7ffb4bf1add00dd008b8..a2a7aa20b18810e19265a0c419be32d3d28cbb33 100644 --- a/solver.c +++ b/solver.c @@ -1,14 +1,74 @@ /* solver.c */ -/* Last Change: 2019/05/21 (Tue) 14:03:02. */ +/* Last Change: 2019/05/21 (Tue) 18:09:17. */ -#include +#include +#include"solver.h" +#include"io.h" +/* #include */ /* #include */ /* #include */ -/* #include */ /* #include */ /* #include */ +short int connected[MAXLINE]={0}; //if line connected:2, if one end:1, otherwize:0 +short int board_beta[MAXSIZE][MAXSIZE]; //big board data +//edge:1~MAXLINE, line:-1~-MAXLINE, none:0, wall:SHRT_MIN +short int rank[MAXBLOCK+1]; + +void reset_board(void){ + int i,j; + for(i=0;imaxw) + maxw=i; + if(imaxh) + maxh=j; + if(j