From 32bc68e13534e914736883901a07038e5415bbba Mon Sep 17 00:00:00 2001 From: royus Date: Sat, 25 May 2019 18:17:27 +0900 Subject: [PATCH] fix --- a.out | Bin 0 -> 13460 bytes io.c | 24 +++++--------------- io.h | 8 ++----- main.c | 6 ++--- solver.c | 66 ++++++++++++++++++++++++++++++++++++++++++++++++++++--- 5 files changed, 73 insertions(+), 31 deletions(-) create mode 100755 a.out diff --git a/a.out b/a.out new file mode 100755 index 0000000000000000000000000000000000000000..15c133907f25ae24d231d30504e72c5653c973ec GIT binary patch literal 13460 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 -#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 3952e52..95d7aa9 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 d7262da..a2a7aa2 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