지난번에 문제를 3번까지 올리다 만 사실조차 까먹고 말았다가 이제 깨달았다.
알고 보니 내 컴퓨터에도 문제를 풀어 놓은 소스가 없었다.
(난 뭐-_-지 ㅜㅠ)
시험기간 중간에 낀 주말이지만, 무시하고 지나가기에는 너무 큰 문제라서 손을 대기로 했다.
그리고 코딩 따위를 금방 끝냈다.
* 참고.
주어진 밭의 수확량에서 동생과 형의 차이를 1로 만드는 데에는 아래와 같은 방법들이 존재한다.
강조한 줄이 하나 있는데, if 내의 <를 <=로 바꾸면 세번째 결과를 내게 된다.
코드에 대한 자세한 설명은 다음 기회로 미룬다.
알고 보니 내 컴퓨터에도 문제를 풀어 놓은 소스가 없었다.
(난 뭐-_-지 ㅜㅠ)
시험기간 중간에 낀 주말이지만, 무시하고 지나가기에는 너무 큰 문제라서 손을 대기로 했다.
그리고 코딩 따위를 금방 끝냈다.
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
char table[20][20];
char solution[20], solving[20];
int total = 0;
int size;
int diff_now, diff_best;
void tablein();
void divide(char col);
void checknow();
void makesol();
int uppersum();
void finish();
int main()
{
tablein();
divide(0);
finish();
return 0;
}
void tablein()
{
int i, j;
int sect;
FILE *fp;
fp = fopen("INPUT.TXT", "r");
fscanf(fp, "%d", &size);
for ( i = 0; i < size; i++ )
{
for ( j = 0; j < size; j++ )
{
fscanf(fp, "%d", §);
total += sect;
table[i][j] = sect;
}
}
fclose(fp);
diff_best = total;
}
void divide(char col)
{
for (solving[col] = 0; col == 0 ? solving[col] <= size : solving[col] <= solving[col - 1]; solving[col]++)
{
if (col == size - 1)
checknow();
else
divide((char)((int)col + 1));
}
}
void checknow()
{
if (total % 2 == 0)
diff_now = abs(uppersum() - total / 2);
else
diff_now = abs(uppersum() - total / 2) + 1;
if (diff_now < diff_best)
makesol();
}
void makesol()
{
diff_best = diff_now;
memcpy(solution, solving, sizeof(char) * size);
}
int uppersum()
{
int i, j, rets = 0;
for (i = 0; i < size; i++)
for (j = 0; j < solving[i]; j++)
rets += table[j][i];
return rets;
}
void finish()
{
int i;
FILE *fp = fopen("OUTPUT.TXT", "w");
fprintf(fp, "%d\n", diff_best);
for (i = 0; i < size; i++)
fprintf(fp, "%d ", size - solution[i]);
fclose(fp);
}
* 참고.
주어진 밭의 수확량에서 동생과 형의 차이를 1로 만드는 데에는 아래와 같은 방법들이 존재한다.
- 2 2 2 3 4 (문제의 예시)
- 1 2 2 3 4
- 0 0 3 5 5
강조한 줄이 하나 있는데, if 내의 <를 <=로 바꾸면 세번째 결과를 내게 된다.
코드에 대한 자세한 설명은 다음 기회로 미룬다.
'Sablog Models > 알고리즘' 카테고리의 다른 글
| 2009 정보올림피아드 지역본선 문제 Review (4) (2) | 2009.12.12 |
|---|---|
| 2009 정보올림피아드 지역본선 문제 Review (3)-3 (0) | 2009.12.07 |
| 2009 정보올림피아드 지역본선 문제 Review (3)-1 (3) | 2009.07.18 |
| 2009 정보올림피아드 지역본선 문제 Review (2)-3 (6) | 2009.07.18 |
| 2009 정보올림피아드 지역본선 문제 Review (2)-2 (0) | 2009.06.21 |