À̸ÞÀÏ: im4u@im4u.co.kr
½ÇÁ¦ IOI, KOI °æ½ÃºÎºÐ ´ëȸÀÇ ¹®Á¦¿¡¼
ÆÄÀÏ ÀÔÃâ·ÂÀ¸·Î ¹®Á¦¸¦ ÇØ°áÇÒ °ÍÀ» ¿ä±¸ÇÕ´Ï´Ù.
Visual C++ ¿¡¼µµ ÆÄÀÏ ÀÔÃâ·Â¿¡ °üÇÑ ³»¿ëÀ»
(Áú¹®ÇϽŠÆÄÀÏÆ÷ÀÎÆ®¸¦ ÀÌ¿ëÇÑ ÆÄÀÏÀÔÃâ·Â ¹æ¹ýµî)
²À ¾Ë¾ÆµÎ¼Å¾ß ÇÕ´Ï´Ù.
ÆÄÀÏÀÔÃâ·Â¿¡ ´ëÇؼ Ãß°¡·Î ¼³¸íÀ» µå¸®¸é ¾Æ·¡¿Í
°°½À´Ï´Ù.
ÆÄÀÏÀ» ÀÔÃâ·ÂÇÏ´Â °ÍÀº ¸î°¡Áö ÇÔ¼ö¸¸ ÀÍÈ÷¸é
ºñ±³Àû ½±°Ô ÇÒ¼ö ÀÖ½À´Ï´Ù.
ÇÔ¼ö¿¡ ´ëÇÑ ÀÚ¼¼ÇÑ ³»¿ëÀº ·¹ÆÛ·±½º¸¦ Âü°íÇϽñ⠹ٶó¸ç,
´ÙÀ½Àº ÀϹÝÀûÀÎ ÇüÅ¿¡ ´ëÇÑ ¼³¸íÀÔ´Ï´Ù.
---------------------------------------------------
FILE* fpHandle; // ÆÄÀÏ ÇÚµéÀ» ¼±¾ðÇÕ´Ï´Ù.
fpHandle = fopen("À̸§", "w" ) // ÆÄÀÏÀ» ¿¾î¼ ÇÚµéÀ» »ý¼ºÇÕ´Ï´Ù.
:
ÆÄÀÏ¿¡ ³»¿ëÀ» Ãâ·ÂÇÕ´Ï´Ù.
:
fclose(fpHandle); // ¿¾ú´ø ÆÄÀÏÀ» ´Ý½À´Ï´Ù.
ÀÇ ÇüÅ·ΠÁ¶ÀÛÀ» ÇÕ´Ï´Ù. ±×¸®°í ÆÄÀÏ¿¡ ÀÔÃâ·ÂÀ» ÇÏ´Â ÇÔ¼öµéÀº ´ÙÀ½°ú °°Àº °ÍµéÀÌ ÀÖ½À´Ï´Ù.
fprintf - ÆÄÀÏ¿¡ printfÀÇ ÇüÅ·ΠÃâ·ÂÇÕ´Ï´Ù.
fscanf - ÀÌ°ÍÀº scanfÀÇ ÇüÅÂ¿Í °°½À´Ï´Ù.
fwrite - ¹öÆÛÀÇ ³»¿ëÀ» ÆÄÀÏ¿¡ ±â·ÏÇÏ´Â ÇÔ¼öÀÔ´Ï´Ù.
fread - ÆÄÀÏÀÇ ³»¿ëÀ» ¹öÆÛ¿¡ Àоî¿À´Â ÇÔ¼öÀÔ´Ï´Ù.
:
----------------------------------------------------
ÀÌ°Íµé ¿Ü¿¡µµ ¸¹Àº ÇÔ¼öµéÀÌ ÀÖÁö¸¸ À§ÀÇ 4°³Á¤µµ¸é
±âº»ÀûÀÎ ¹®Á¦µéÀ» Ǫ´Âµ¥ Å« ÁöÀåÀÌ ¾øÀ¸¸®¶ó »ý°¢µË´Ï´Ù.
¾Æ·¡´Â À§¿¡¼ ¼³¸íÇÑ ³»¿ëµéÀ» ÀÌ¿ëÇÏ¿©, ½ÇÁ¦ IOI2002¿¡¼
Á¦°øÇÏ´Â ¿Ã¸²ÇÇ¾Æµå ¿¹»ó¹®Á¦¿¡ ´ëÇÑ ÇØ´ä ¼Ò½ºÄڵ带
Á¦½ÃÇÏ¿´À¸´Ï Âü°íÇϽñ⠹ٶø´Ï´Ù.
#include <stdio.h>
#define INPUT_FILE "input.txt"
#define OUTPUT_FILE "output.txt"
#define MAX_N 1000
#define MAX_WEIGHT 10000
#define MAX_VALUE 50000 * MAX_WEIGHT
int T, E, F, N;
int P[MAX_N], W[MAX_N];
int S[MAX_WEIGHT+1];
FILE *inf, *outf;
void input_data()
{
fscanf(inf, "%d %d\n", &E, &F);
fscanf(inf, "%d\n", &N);
for (int i=0; i<N; i++)
fscanf(inf, "%d %d\n", &P[i], &W[i]);
}
void initialize_S()
{
S[0] = 0;
for (int i=1; i<=F-E; i++)
S[i] = MAX_VALUE;
}
void solve()
{
int i, j;
initialize_S();
for (i=0; i<N; i++)
for (j=0; j<=F-E-W[i]; j++)
if (S[j]+P[i] < S[j+W[i]]) S[j+W[i]] = S[j]+P[i];
}
void output_result()
{
if (S[F-E] == MAX_VALUE) fprintf(outf, "-1\n");
else fprintf(outf, "%d\n", S[F-E]);
}
void main()
{
inf = fopen(INPUT_FILE, "r");
outf = fopen(OUTPUT_FILE, "w");
fscanf(inf, "%d\n", &T);
for(int i=0; i<T; i++) {
input_data();
solve();
output_result();
}
fclose(inf);
fclose(outf);
}
* Âü°í·Î ¿ÃÇØ Çѱ¹Á¤º¸¿Ã¸²ÇÇ¾Æµå °æ½ÃºÎºÐ¿¡¼ »ç¿ëÇØ¾ß ÇÏ´Â ¾ð¾î´Â ¾Æ·¡¿Í °°½À´Ï´Ù.
»ç¿ë¾ð¾î : Visual Basic, Visual C++, Delphi
¡Ø ±ÇÀå¹öÁ¯ : Visual Basic 6.0, Visual C++ 6.0, Delphi5
|
|