したらばTOP ■掲示板に戻る■ 全部 1-100 最新50 | メール | |

管理人の独り言(プログラミング関連)

199 ◆rCEzuNnL0g:2008/09/02(火) 21:31:34
>>198
俺が馬鹿だっただけだ。

四問目が漸く出来た。
絶対三時間以内に出来ない。
-----
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

struct point{
int x;
int y;
};

int main(int argc, char **argv){
FILE *in = fopen("input.txt", "r");
FILE *out = fopen("output.txt", "w");
char buff[32];
int height, width;
char **mat;
char **c_mat;
int ret;

int i, j, k;

fgets(buff, sizeof(buff), in);
sscanf(buff, "%d %d", &height, &width);


mat = calloc(height, sizeof(mat[0]));
if(!mat) return -1;

for(i = 0; i < height; i++){
mat[i] = calloc(width, sizeof(mat[0][0]));
if(!mat[i]) return -2;
}

c_mat = calloc(height, sizeof(c_mat[0]));
if(!c_mat) return -3;

for(i = 0; i < height; i++){
c_mat[i] = calloc(width, sizeof(c_mat[0][0]));
if(!c_mat[i]) return -4;
}

for(i = 0; i < height; i++){
for(j = 0; j < width; j++){
mat[i][j] = fgetc(in) - '0' ? ~0 : 0;
fgetc(in);
}
}

//初期化終わり

//出来るだけ0へ

ret = -1;
for(i = 0; i < (1 << height); i++){
int carrent_max = 0;

for(j = 0; j < height; j++){
if((i >> j) & 1){
for(k = 0; k < width; k++){
c_mat[j][k] = ~mat[j][k];
}
}else{
for(k = 0; k < width; k++){
c_mat[j][k] = mat[j][k];
}
}
}

//第二初期化完了
for(j = 0; j < width; j++){
int count = 0;

for(k = 0; k < height; k++){
if(c_mat[k][j] == 0){
count++;
}
}

carrent_max += max(count, height - count);
}

ret = max(ret, carrent_max);
}

fprintf(out, "%d", ret);


return 0;
}


新着レスの表示


名前: E-mail(省略可)

※書き込む際の注意事項はこちら

※画像アップローダーはこちら

(画像を表示できるのは「画像リンクのサムネイル表示」がオンの掲示板に限ります)

掲示板管理者へ連絡 無料レンタル掲示板