Commit 32bc68e1 authored by royus's avatar royus
Browse files

fix

parent 255f6279
Loading
Loading
Loading
Loading

a.out

0 → 100755
+13.1 KiB

File added.

No diff preview for this file type.

+5 −19
Changes for io.c: 5 added lines, 19 removed lines.
Original line number Diff line number Diff line
/* io.c */
/* Last Change: 2019/05/21 (Tue) 13:57:18. */
/* Last Change: 2019/05/25 (Sat) 18:11:46. */

#include<stdio.h>
#include<limits.h>
#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;i<MAXW;i++)
		for(j=0;j<MAXH;j++)
			board_data[i][j]=0;
	return;
}
@@ -31,11 +30,11 @@ void read_problem(void){
	char c,str[32]; // must be 20 or more
	scanf(" %s",str); //SIZE
	scanf(" %hd",&W);
	if(W>72||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;i<w;i++){
		for(j=0;j<h;j++){
			if(board_data[i][j]==SHRT_MIN)
				board_data[i][j]=0;
			else if(board_data[i][j]<0)
				board_data[i][j]=-board_data[i][j];
		}
	}
	return;
}

void print_answer(void){
	printf("\n --ANSWER-- \n"); //comment out this row
	int i,j;
+2 −6
Changes for io.h: 2 added lines, 6 removed lines.
Original line number Diff line number Diff line
/* io.h */
/* Last Change: 2019/05/21 (Tue) 14:01:43. */
/* Last Change: 2019/05/21 (Tue) 14:56:05. */
#ifndef _IO_H_
#define _IO_H_

@@ -24,19 +24,15 @@ short int block_data[MAXBLOCK+1][5][3]; // ブロックの情報
//   block_data[block#][1~4][1] マスの,左上マスからの相対位置 y方向
//   block_data[block#][1~4][2] マスの端点情報 (数字がなければ0,モノミノで存在しない場合は-1)

short int board_data[72][72]; // 盤面情報
short int board_data[MAXW][MAXH]; // 盤面情報
// board_data[x][y] が (x,y) の盤面情報を表わす
// (0,0),(1,0),(2,0), ... ,(71,0)
//            ...
// (0,71),(1,71), ... ,(71,71)
// 基本的には回答フォーマットに沿う形
// 負の数はconvert_answerでSHRT_MIN->0,その他は自然数に変換される
// (アルゴリズム的に必要であれば使ってください)
// (私は壁(端点ではないマス)をSHRT_MINで,配線を負の数で実装してます)

void reset_parameters(void); // read_problem に内包
void read_problem(void);
void convert_answer(void);
void print_answer(void);

#endif // _IO_H_
+3 −3
Changes for main.c: 3 added lines, 3 removed lines.
Original line number Diff line number Diff line
/* 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;
+63 −3
Changes for solver.c: 63 added lines, 3 removed lines.
Original line number Diff line number Diff line
/* solver.c */
/* Last Change: 2019/05/21 (Tue) 14:03:02. */
/* Last Change: 2019/05/21 (Tue) 18:09:17. */

#include<stdio.h>
#include<limits.h>
#include"solver.h"
#include"io.h"
/* #include<stdio.h> */
/* #include<stdlib.h> */
/* #include<string.h> */
/* #include<limits.h> */
/* #include<math.h> */
/* #include<time.h> */

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;i<MAXSIZE;i++)
		for(j=0;j<MAXSIZE;j++)
			board_beta[i][j]=0;
	return;
}

void read_data(void){
	return;
}

void translate(void){
	int i,j;
	int minw=MAXSIZE-1,maxw=0,minh=MAXSIZE-1,maxh=0;
	for(i=0;i<MAXSIZE;i++){
		for(j=0;j<MAXSIZE;j++){
			if(board_beta[i][j]){
				if(i>maxw)
					maxw=i;
				if(i<minw)
					minw=i;
				if(j>maxh)
					maxh=j;
				if(j<minh)
					minh=j;
				if(board_beta[i][j]==SHRT_MIN)
					board_beta[i][j]=0;
				else if(board_beta[i][j]<0)
					board_beta[i][j]=-board_beta[i][j];
			}
		}
	}
	for(i=1;i<=blocks;i++){
		/* block_data[i][0]-=minw; */
		/* block_data[i][1]-=minh; */
	}
	for(i=0;i<maxw-minw;i++){
		for(j=0;j<maxh-minh;j++){
			board_data[i][j]=board_beta[i+minw][j+minh];
		}
	}
	return;
}

void solve(void){
	return;
}

void solver(void){
	read_data();
	solve();
	/* shape(); */
	translate();
	return;
}