블로그는 귀차니즘

First Sensation
  • 공지
  • 지역로그
  • 태그
  • 방명록

Algorithm Traning Book - 다섯번째 문제

Algorithm 2008/06/15 23:13 귀차니스트
  음 한 주가 지나가고 새로운 한 주가 시작되는 시점입니다. 뭐 이런저런 일들이 저번 주에는 많았군요. 어떻게 하다보니 필요에 의한 근무지를 경산으로 잠시 옮기게 되었습니다. 기간은 약 1달 정도로 잡고 있구요. 미완된 프로그램을 완전하게 작성하는 부분이 남았습니다. 야근이 계속 된다면 포스팅이 더뎌 질 수도 있겠군요^^.

  이번 문제도 쉬운 문제입니다. 이름은 Graphical Editor이구요. 입력되는 명령을 파싱하여 구분별로 입력받은 좌표와 데이터로 간단한 데이터 조작하는 것이 문제 해결의 전부입니다. 어떻게 입력을 받고 출력을 해야 하는지 한 번 살펴보도록 하겠습니다.

입력( 제한 X와 Y 좌표는 1 <= X,Y <= 250 까지만 입력됩니다. )
I 5 6
L 2 3 A
S one.bmp
G 2 3 J
F 3 3 J
V 2 3 4 W
H 3 4 2 Z
S two.bmp
X

출력
one.bmp
OOOOO
OOOOO
OAOOO
OOOOO
OOOOO
OOOOO
two.bmp
JJJJJ
JJZZJ
JWJJJ
JWJJJ
JJJJJ
JJJJJ

  대충 이런 출력형식을 띄게 됩니다. 물론 입력값에 대한 정의는 아래와 같죠.

I M N - 모든 픽셀이 M X N 이미지 크기로 됩니다. 데이터는 O로 채워집니다.
C      - 모든 픽셀을 O로 채워 지웁니다.

L X Y C - (X, Y) 픽셀을 C색으로 채웁니다.
V X Y1 Y2 C - X열에 해당하는 Y1에서 Y2까지 C색으로 세로선을 그립니다.
H X1 X2 Y C - Y행에 해당하는 X1에서 X2까지 C색으로 가로선을 그립니다.
K X1 Y1 X2 Y2 C - (X1,Y1)에서 (X2, Y2) 까지 사각형을 C색으로 칠합니다.
F X Y C - (X, Y)에 해당하는 픽셀에 인접하는 같은 색의 모든 픽셀을 C색으로 칠합니다.
S Name - 파일 이름을 출력합니다.
X - 프로그램을 종료합니다.

  정의는 그렇게 어렵지 않죠^^. 그래도 나름 한 가지 생각해볼 것이라면 F 커맨드가 이 중엔 제일 이겠군요. 그래도 별로 어렵지는 않으니 ^^. 재미있게 대충대충 ㅎㅎ

Graphical.cpp (Language : cpp)
  1. #include <iostream>
  2. #include <string>
  3. #include <deque>
  4.  
  5. int Width, Height;
  6. char Image[251][251];
  7.  
  8. void StringTokenizer( const std::string &Str, std::deque< std::string > &Token, const std::string &Delimiter );
  9.  
  10. void NewImage( std::deque< std::string > &Token );
  11. void ClearImage( std::deque< std::string > &Token );
  12. void SetPixel( std::deque< std::string > &Token );
  13. void VerticalLine( std::deque< std::string > &Token );
  14. void HorizonLine( std::deque< std::string > &Token );
  15. void Square( std::deque< std::string > &Token );
  16. void MagicWord( std::deque< std::string > &Token );
  17. void SaveImage( std::deque< std::string > &Token );
  18. void ExitProgram( std::deque< std::string > &Token );
  19.  
  20. void NearstFill( int X, int Y, char Color, char OldColor );
  21.  
  22. int main( int argc, char **argv )
  23. {
  24.     char InputString[ 256 ];
  25.  
  26.     while( true )   {
  27.  
  28.         std::cin.getline( InputString, 255 );
  29.         std::deque< std::string > TokenContainer;
  30.  
  31.         StringTokenizer( InputString, TokenContainer, "\t " );
  32.  
  33.         std::string &Cmd = TokenContainer.front();
  34.         if( Cmd == "I" )
  35.             NewImage( TokenContainer );
  36.         else if( Cmd == "C" )
  37.             ClearImage( TokenContainer );
  38.         else if( Cmd == "L" )
  39.             SetPixel( TokenContainer );
  40.         else if( Cmd == "V" )
  41.             VerticalLine( TokenContainer );
  42.         else if( Cmd == "H" )
  43.             HorizonLine( TokenContainer );
  44.         else if( Cmd == "K" )
  45.             Square( TokenContainer );
  46.         else if( Cmd == "F" )
  47.             MagicWord( TokenContainer );
  48.         else if( Cmd == "S" )
  49.             SaveImage( TokenContainer );
  50.         else if( Cmd == "X" )
  51.             ExitProgram( TokenContainer );
  52.     }
  53.  
  54.     return 0;
  55. }
  56.  
  57. void StringTokenizer( const std::string &Str, std::deque< std::string > &Token, const std::string &Delimiter )
  58. {
  59.     std::string::size_type LastPos = Str.find_first_not_of( Delimiter, 0 );
  60.     std::string::size_type Pos     = Str.find_first_of( Delimiter, LastPos );
  61.    
  62.     while( std::string::npos != Pos || std::string::npos != LastPos )
  63.     {
  64.         Token.push_back( Str.substr( LastPos, Pos - LastPos ) );
  65.         LastPos = Str.find_first_not_of( Delimiter, Pos );
  66.         Pos = Str.find_first_of( Delimiter, LastPos );
  67.     }
  68. }
  69.  
  70. void NewImage( std::deque< std::string > &Token )
  71. {
  72.     Width = atoi(Token[1].c_str());
  73.     Height = atoi(Token[2].c_str());
  74.  
  75.     ClearImage( Token );
  76. }
  77.  
  78. void ClearImage( std::deque< std::string > &Token )
  79. {
  80.     for( int i = 0; i <= Height; ++i )
  81.         for( int j = 0; j <= Width; ++j )
  82.             Image[ i ][ j ] = 'O';
  83. }
  84.  
  85. void SetPixel( std::deque< std::string > &Token )
  86. {
  87.     int X = atoi(Token[1].c_str());
  88.     int Y = atoi(Token[2].c_str());
  89.     char Color = *Token[3].c_str();
  90.  
  91.     Image[ Y ][ X ] = Color;
  92. }
  93.  
  94. void VerticalLine( std::deque< std::string > &Token )
  95. {
  96.     int X = atoi(Token[1].c_str());
  97.     int Y = atoi(Token[2].c_str());
  98.     int Y2 = atoi(Token[3].c_str());
  99.     char Color = *Token[4].c_str();
  100.  
  101.     if( Y2 < Y )
  102.         std::swap( Y, Y2 );
  103.  
  104.     for( int i = Y; i <= Y2; ++i )
  105.         Image[ i ][ X ] = Color;
  106. }
  107.  
  108. void HorizonLine( std::deque< std::string > &Token )
  109. {
  110.     int X = atoi(Token[1].c_str());
  111.     int X2 = atoi(Token[2].c_str());
  112.     int Y = atoi(Token[3].c_str());
  113.     char Color = *Token[4].c_str();
  114.  
  115.     if( X2 < X )
  116.         std::swap( X, X2 );
  117.  
  118.     for( int i = X; i <= X2; ++i )
  119.         Image[ Y ][ i ] = Color;
  120. }
  121.  
  122. void Square( std::deque< std::string > &Token )
  123. {
  124.     int X = atoi(Token[1].c_str());
  125.     int X2 = atoi(Token[2].c_str());
  126.     int Y = atoi(Token[3].c_str());
  127.     int Y2 = atoi(Token[4].c_str());
  128.     char Color = *Token[4].c_str();
  129.  
  130.     if( X2 < X )
  131.         std::swap( X, X2 );
  132.  
  133.     if( Y2 < 2 )
  134.         std::swap( Y, Y2 );
  135.  
  136.     for( int i = Y; i <= Y2; ++i )
  137.         for( int j = X; j <= X2; ++j )
  138.             Image[ i ][ j ] = Color;
  139. }
  140.  
  141. void MagicWord( std::deque< std::string > &Token )
  142. {
  143.     int X = atoi(Token[1].c_str());
  144.     int Y = atoi(Token[2].c_str());
  145.     char Color = *Token[3].c_str();
  146.     char OldColor = Image[ Y ][ X ];
  147.  
  148.     NearstFill( X, Y, Color, OldColor );
  149. }
  150.  
  151. void SaveImage( std::deque< std::string > &Token )
  152. {
  153.     std::cout << Token[1] << std::endl;
  154.  
  155.     for( int i = 1; i <= Height; ++i )  {
  156.         for( int j = 1; j <= Width; ++j )
  157.             std::cout << Image[ i ][ j ];
  158.        
  159.         std::cout << std::endl;
  160.     }
  161. }
  162.  
  163. void ExitProgram( std::deque< std::string > &Token )
  164. {
  165.     exit(0);
  166. }
  167.  
  168. void NearstFill( int X, int Y, char Color, char OldColor )
  169. {
  170.     if( Image[ Y ][ X ] == OldColor )   {
  171.        
  172.         Image[ Y ][ X ] = Color;
  173.  
  174.         if( X > 1 )
  175.             NearstFill( X - 1, Y, Color, OldColor );
  176.  
  177.         if( X < Width )
  178.             NearstFill( X + 1, Y, Color, OldColor );
  179.  
  180.         if( Y > 1 )
  181.             NearstFill( X, Y - 1, Color, OldColor );
  182.  
  183.         if( Y < Height )
  184.             NearstFill( X, Y + 1, Color, OldColor );
  185.     }
  186. }

  깔끔하게 해보려고 했지만 일단 그냥 푸는게 더 좋을것 같아서 대충대충 했습니다. 일단 결과물이 나와야 과정이 중요하지 않겠습니까^^? 그럼 새로운 한 주 잘보세요.
크리에이티브 커먼즈 라이센스
Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-동일조건변경허락 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.

"Algorithm" 분류의 다른 글

Algorithm Traning Book - 세 번째 문제 (0)2008/06/10
Algorithm Traning Book - 두 번째 문제 (0)2008/06/09
3n+1 Problem (0)2008/02/17
The Blocks Problem (0)2008/02/17
Maximum Sum (0)2008/02/17
2008/06/15 23:13 2008/06/15 23:13
TAG 알고리즘 트레이닝
받은 트랙백이 없고, 댓글이 없습니다.

트랙백 주소 :: http://www.filewiki.net/tc/trackback/78

댓글을 달아 주세요

Algorithm Traning Book - 세 번째 문제

Algorithm 2008/06/10 23:42 귀차니스트
  금방 풀어봤던 한 문제는 The Trip(여행)이라는 문제입니다. 이 것도 초반 문제다 보니 별로 어렵지는 않네요. 대략적인 문제의 개요는 여행을 가는데 여러명이 사용하는 경비를 각자 내려니 너무 귀찮다는거죠. 그리하여 각 사람마다 여행경비, 숙박비 등을 지불하게 되는데 이게 또 그냥 넘어가면 껄쩍지근 하잖습니까?^^ 그래서 돈을 나중에 서로 교환을 하여 서로 지불액수를 맞추게 됩니다.
  여기서 포인트는 액수를 맞추기 위하여 이동하는 돈의 개수를 센트까지 세어라 입니다. 물론 입력은 달러 단위로 받게 되구요. 일단 입력과 출력 예제를 보겠습니다.

입력:
3
10.00
20.00
30.00
4
15.00
15.01
3.00
3.01

출력:
$10.00
$11.99

TheTrip.cpp (Language : cpp)
  1. #include <iostream>
  2. #include <cmath>
  3.  
  4. int main(int argc, char **argv)
  5. {
  6.     int CntInput = 0;
  7.     double CostList[1000] = {0.00,};
  8.  
  9.     do{
  10.         double Average = 0.00;
  11.         double MoveCost = 0.00;
  12.  
  13.         std::cin >> CntInput;
  14.  
  15.         for( int i = 0; i < CntInput; ++i ) {
  16.            
  17.             std::cin >> CostList[i];
  18.             Average += CostList[i];
  19.         }
  20.  
  21.         if( CntInput != 0 ) {
  22.        
  23.             Average /= static_cast<double>(CntInput);
  24.             double DiffCost = 0.00;
  25.            
  26.             for( int i = 0; i < CntInput; ++i ) {
  27.    
  28.                 DiffCost = Average - CostList[i];
  29.                 MoveCost += ( DiffCost > 0.00 ? DiffCost : 0.00 );
  30.             }
  31.  
  32.             std::cout.precision(2);
  33.             std::cout << std::fixed << '$' << std::floor(MoveCost * 100) / 100 << std::endl;
  34.         }
  35.  
  36.     }while( CntInput != 0 );
  37.  
  38.     return 0;
  39. }

  이 문제도 사실 어렵지 않기 때문에 대충대충 해서 풀었습니다. 한 가지 숫자의 정밀도 출력으로 인해서 11.99가 출력되어야할 시점에 12가 출력될 수 있기 떄문에 센트까지만 이라는 힌트를 참조하여 * 100을 한 다음 / 100을 하여 내림을 시켜버리면 문제없이 출력이 됩니다.
  다음 문제도 계속 풀어봐야 겠군요^^.
 
크리에이티브 커먼즈 라이센스
Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-동일조건변경허락 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.

"Algorithm" 분류의 다른 글

Algorithm Traning Book - 다섯번째 문제 (0)2008/06/15
Algorithm Traning Book - 두 번째 문제 (0)2008/06/09
3n+1 Problem (0)2008/02/17
The Blocks Problem (0)2008/02/17
Maximum Sum (0)2008/02/17
2008/06/10 23:42 2008/06/10 23:42
TAG 알고리즘 트레이닝
받은 트랙백이 없고, 댓글이 없습니다.

트랙백 주소 :: http://www.filewiki.net/tc/trackback/76

댓글을 달아 주세요

Algorithm Traning Book - 두 번째 문제

Algorithm 2008/06/09 23:29 귀차니스트

  음 뭐 책을 사놓고 도통 보지 않는 것 같아 오늘 야근 하고 돌아온 김에 잠시 봤는데 시간이 없어 많은 것을 생각하는 문제는 선택하지 못하고 아주 간단한 문제를 선택해봤습니다. 아무래도 첫 술부터 배부를 수는 없듯이 차근차근 있는 문제 그냥 연습한다 치고 하나씩 풀어보기로 했습니다.
  문제의 이름은 Mine Sweeper네요. 대충 입력, 출력의 예와 코드 는 다음과 같습니다.

입력

4 4
*...
....
.*..
....

출력
*100
2210
1*10
1110

MineSweeper.cpp (Language : cpp)
  1. #include <iostream>
  2.  
  3. int Width, Height;
  4. char MineField[100][100];
  5.  
  6. int GetField(int col, int row)
  7. {
  8.     if( (0 <= col && col < Height) &&
  9.         (0 <= row && row < Width )) {
  10.  
  11.         return (MineField[col][row] == '*' ? 1 : 0);
  12.     }
  13.  
  14.     return 0;
  15. }
  16.  
  17. char Calculate(int col, int row)
  18. {
  19.     if( GetField(col, row) )
  20.         return '*';
  21.  
  22.     int Count = 0;
  23.     Count += GetField( col - 1, row - 1 );
  24.     Count += GetField( col - 1, row );
  25.     Count += GetField( col - 1, row + 1 );
  26.     Count += GetField( col, row - 1 );
  27.     Count += GetField( col, row + 1 );
  28.     Count += GetField( col + 1, row - 1 );
  29.     Count += GetField( col + 1, row );
  30.     Count += GetField( col + 1, row + 1 );
  31.    
  32.     return '0' + Count;
  33. }
  34.  
  35. int main( int argc, char **argv )
  36. {
  37.     while( true )   {
  38.         std::cin >> Width >> Height;
  39.  
  40.         if( Width == 0 && Height == 0 )
  41.             break;
  42.  
  43.         for( int i = 0; i < Height; ++i )   {
  44.             for( int j = 0; j < Width; ++j )    {
  45.                
  46.                 std::cin >> MineField[i][j];
  47.             }
  48.         }
  49.  
  50.         for( int i = 0; i < Height; ++i )   {
  51.             for( int j = 0; j < Width; ++j )    {
  52.                
  53.                 std::cout << Calculate(i, j);
  54.             }
  55.  
  56.             std::cout << std::endl;
  57.         }
  58.     }
  59.  
  60.     return 0;
  61. }


  복잡한 문제는 아니죠^^? 그냥 아주 간단하길래 대충 생각하고 대충 풀었습니다. 코드가 즈질 이군요 ㅎㅎ
계속해서 한 문제씩 차근차근 풀어봐야 겠습니다.
크리에이티브 커먼즈 라이센스
Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-동일조건변경허락 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.

"Algorithm" 분류의 다른 글

Algorithm Traning Book - 다섯번째 문제 (0)2008/06/15
Algorithm Traning Book - 세 번째 문제 (0)2008/06/10
3n+1 Problem (0)2008/02/17
The Blocks Problem (0)2008/02/17
Maximum Sum (0)2008/02/17
2008/06/09 23:29 2008/06/09 23:29
TAG Mine Sweeper, 알고리즘 트레이닝
받은 트랙백이 없고, 댓글이 없습니다.

트랙백 주소 :: http://www.filewiki.net/tc/trackback/75

댓글을 달아 주세요

3n+1 Problem

Algorithm 2008/02/17 08:30 귀차니스트
  1. 문제링크 : http://icpcres.ecs.baylor.edu/onlinejudge/index.php?option=com_onlinejudge&Itemid=8&category=3&page=show_problem&problem=36 
  2.  의   경   : 처음으로 나오는 쉬운 기초적인 문제입니다. 하지만 체크해야될 조건이 있습니다. 바로 입력 숫자의 크기가 서로 바뀔 수 있다는 점이죠.
    입력 방식이 10 20과 같이 입력될 때에는 괜찮으나 20 10과 같이 입력될 때에는 체크를 꼭 해주어야 합니다.
  3. 소스
    100.c (Language : c)
    1. #include <stdio.h>
    2.  
    3. int Calculation( int number );
    4.  
    5. int main( int argc, char **argv )
    6. {
    7.     int StInput, EnInput;
    8.     int StartNum, EndNum, RetValue;
    9.  
    10.     int i, MaxCycle;
    11.     while( scanf( "%d %d", &StInput, &EnInput ) == 2 ) {
    12.         if( StInput > EnInput ) {
    13.             StartNum = EnInput;
    14.             EndNum = StInput;
    15.         }
    16.         else {
    17.             StartNum = StInput;
    18.             EndNum = EnInput;
    19.         }
    20.         MaxCycle = 0;
    21.         for( i = StartNum; i <= EndNum; i++ ) {
    22.             RetValue = Calculation( i );
    23.             if( RetValue > MaxCycle )
    24.                 MaxCycle = RetValue;
    25.         }
    26.         printf( "%d %d %d\n", StInput, EnInput, MaxCycle );
    27.     }
    28.     return 0;
    29. }
    30.  
    31. int Calculation( int number )
    32. {
    33.     int CycleLength;
    34.     for( CycleLength = 1; number != 1; CycleLength++ ) {
    35.         if( number == 1 )
    36.             break;
    37.         if( number % 2 == 1 ) {
    38.             number = number * 3 + 1;
    39.         }
    40.         else {
    41.             number = number >> 1;
    42.         }
    43.     }
    44.     return CycleLength;
    45. }


크리에이티브 커먼즈 라이센스
Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-동일조건변경허락 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.

"Algorithm" 분류의 다른 글

Algorithm Traning Book - 다섯번째 문제 (0)2008/06/15
Algorithm Traning Book - 세 번째 문제 (0)2008/06/10
Algorithm Traning Book - 두 번째 문제 (0)2008/06/09
The Blocks Problem (0)2008/02/17
Maximum Sum (0)2008/02/17
2008/02/17 08:30 2008/02/17 08:30
TAG ACM, ACM-ICPC, C, ICPC
받은 트랙백이 없고, 댓글이 없습니다.

트랙백 주소 :: http://www.filewiki.net/tc/trackback/3

댓글을 달아 주세요

The Blocks Problem

Algorithm 2008/02/17 08:30 귀차니스트
  1. 문제링크 : http://icpcres.ecs.baylor.edu/onlinejudge/index.php?option=com_onlinejudge&Itemid=8&category=3&page=show_problem&problem=37
  2.  의   견   : 명령어 파싱에 대한 연습을 하는 문제라고 생각합니다. 한 가지 언어 특성상 Pointer를 이용한 List 형식으로 코드를 작성할 때 구현에 있어 난이도가 조금 있을 것입니다. 그리하여 STL을 부분적으로 사용했었고
    , 아마 지금 재작성 한다면 table을 비롯하여 모든 부분을 STL으로 작성할 것 같습니다.
  3. 소스
    101.cpp (Language : cpp)
    1. #include <iostream>
    2. #include <deque>
    3. #include <string>
    4.  
    5. using namespace std;
    6.  
    7. deque< int > *table;
    8. int *link;
    9. int BlockNum;
    10.  
    11. void returning( int index );
    12. void moving( int index1, int index2 );
    13. void piling( int index1, int index2 );
    14. void print();
    15.  
    16. int main( int argc, char **argv )
    17. {
    18.     cin >> BlockNum;
    19.     if( 0 < BlockNum && BlockNum < 25 ) {
    20.         table = new deque< int >[ BlockNum ];
    21.         link = new int[ BlockNum ];
    22.         for( int i = 0; i < BlockNum; i++ ) {
    23.             link[ i ] = i;
    24.             table[ i ].push_back( i );
    25.         }
    26.         string cmd1;
    27.         int a;
    28.         string cmd2;
    29.         int b;
    30.         while( true ) {
    31.             cin >> cmd1;
    32.             if( cmd1 == "quit" ) {
    33.                 print();
    34.                 break;
    35.             }
    36.             cin >> a >> cmd2 >> b;
    37.             if( a != b && link[ a ] != link[ b ] && 0 <= a && a < BlockNum && 0 <= b && b < BlockNum ) {
    38.                 if( cmd1 == "move" ) {
    39.                     if( cmd2 == "onto" ) {
    40.                         // move A onto B
    41.  
    42.                         returning( a );
    43.                         returning( b );
    44.                         moving( a, b );
    45.                     }
    46.                     else if( cmd2 == "over" ) {
    47.                         // move A over B
    48.                         returning( a );
    49.                         moving( a, b );
    50.                     }
    51.                 }
    52.                 else if( cmd1 == "pile" ) {
    53.                     if( cmd2 == "onto" ) {
    54.                         // pile A onto B
    55.  
    56.                         returning( b );
    57.                         piling( a, b );
    58.  
    59.                     }
    60.                     else if( cmd2 == "over" ) {
    61.                         // pile A over B
    62.                         piling( a, b );
    63.                     }
    64.                 }
    65.             }
    66.         }
    67.         delete [] table;
    68.         delete [] link;
    69.     }
    70.     return 0;
    71. }
    72.  
    73. void returning( int index )
    74. {
    75.     int BlockIndex = link[ index ];
    76.     while( table[ BlockIndex ].back() != index ) {
    77.  
    78.         int Block = table[ BlockIndex ].back();
    79.         table[ Block ].push_back( Block );
    80.         table[ BlockIndex ].pop_back();
    81.         link[ Block ] = Block;
    82.     }
    83. }
    84.  
    85. void moving( int index1, int index2 )
    86. {
    87.     int a = link[ index1 ];
    88.     int b = link[ index2 ];
    89.     table[ b ].push_back( table[ a ].back() );
    90.     table[ a ].pop_back();
    91.     link[ index1 ] = link[ index2 ];
    92. }
    93.  
    94. void piling( int index1, int index2 )
    95. {
    96.     deque< int > temp;
    97.     int BlockIndex1 = link[ index1 ];
    98.     while( table[ BlockIndex1 ].back() != index1 ) {
    99.         temp.push_back( table[ BlockIndex1 ].back() );
    100.         table[ BlockIndex1 ].pop_back();
    101.     }
    102.     temp.push_back( table[ BlockIndex1 ].back() );
    103.     table[ BlockIndex1 ].pop_back();
    104.     int BlockIndex2 = link[ index2 ];
    105.     while( !temp.empty() ) {
    106.         int linkTemp = temp.back();
    107.         temp.pop_back();
    108.         table[ BlockIndex2 ].push_back( linkTemp );
    109.         link[ linkTemp ] = link[ index2 ];
    110.     }
    111. }
    112.  
    113. void print()
    114. {
    115.     deque< int >::iterator prt;
    116.     for( int i = 0; i < BlockNum; i++ ) {
    117.         cout << i << ":";
    118.         prt = table[ i ].begin();
    119.         while( prt != table[ i ].end() ) {
    120.             cout << " " << *prt;
    121.             prt++;
    122.         }
    123.         cout << endl;
    124.     }
    125. }
크리에이티브 커먼즈 라이센스
Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-동일조건변경허락 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.

"Algorithm" 분류의 다른 글

Algorithm Traning Book - 다섯번째 문제 (0)2008/06/15
Algorithm Traning Book - 세 번째 문제 (0)2008/06/10
Algorithm Traning Book - 두 번째 문제 (0)2008/06/09
3n+1 Problem (0)2008/02/17
Maximum Sum (0)2008/02/17
2008/02/17 08:30 2008/02/17 08:30
TAG ACM, ACM-ICPC, C++, ICPC, STL
받은 트랙백이 없고, 댓글이 없습니다.

트랙백 주소 :: http://www.filewiki.net/tc/trackback/5

댓글을 달아 주세요

◀ 이전페이지 1 2 다음페이지 ▶

블로그 이미지
First Sensation 귀차니스트
rss
  • 관리자
  • 글쓰기

카테고리

  • 전체 (110)
    • Computer (3)
    • Language (14)
    • Reverse Engineering (1)
    • Algorithm (9)
    • TopCoder (3)
    • Library (2)
    • Programming (19)
    • Programming Tip (9)
    • PSP-Programming (10)
    • Program (5)
    • Small Talk (31)
    • Document (4)

최근에 올라온 글

  • Gradient 작성중에 있습.... (3)
  • 게임&인터랙티브 애플리....
  • 한게임 자동테트리스 Ve.... (24)
  • Intel 64 And IA32 Arch.... (2)
  • 한게임 자동테트리스 Ve.... (24)

최근에 달린 댓글

  • 다운어덯게 받아요. difl 2008
  • 멋있네요 ㅎㅎ. 준호씨 2008
  • ^^; 그러셨군요.. 사실 동영.... 귀차니스트 2008
  • ㅋㅋ 속도 튜닝의 무서움 ㅜ.... 귀차니스트 2008
  • 관리자만 볼 수 있는 댓글입.... 비밀방문자 2008

달력

«   2009/01   »
일 월 화 수 목 금 토
        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31

링크

  • kkamagui 프로그래밍 세상.
  • 류광의 번역 이야기.
  • 서광열의 프로그래밍 언....
  • 준호씨의 블로그.
  • 최익필의 이름없는 블로그.
  • 위키는 귀차니즘.

최근에 받은 트랙백

  • 궁극의 예외처리. 이름없는 블로그 2008
  • Maximum sum. 티스토리 지점 2008

글 보관함

  • 2008/12 (1)
  • 2008/11 (4)
  • 2008/10 (2)
  • 2008/09 (3)
  • 2008/08 (5)

태그목록

  • GUI
  • FTP
  • i++
  • boost::random
  • Ribbon UI
  • 책
  • 인코딩
  • Freetype2
  • 뻘글
  • spirit
  • Xtream Toolkit Pro
  • smart Pointer
  • Singleton
  • 갑
  • 표준
  • 십자매
  • Mine Sweeper
  • ACM-ICPC
  • XQuared
  • 공백
  • Pangya
  • tr1
  • Hexrays
  • 준비
  • Contest
  • VCL
  • System.Xml
  • X64
  • Gradient
  • 난수

지역로그 : 태그 : 방명록 : 관리자 : 글쓰기
귀차니스트’s Blog is powered by Textcube 1.7.5 : Risoluto / Designed by DesignNia.net