티스토리 뷰

알고리즘 문제 풀이

문제 2. Minesweeper

따분한놈 2015. 10. 19. 22:27

지최찾기 문제 입니다.

첫 번 째 입력엔 각각 행과 열을 나타나는 개수를 넣습니다.

입력시 0보다 크고 100보다 작아야 하며, 지뢰는 *, 공백 칸은 . 을 넣어야 합니다.

그리고 역시나 0이 입력될 시 프로그램이 종료되도록 처리를 해야 합니다.

 

근데 역시나 1번째 문제에와 같이 채점 봇이 영 지랄이라 .. 하..

아직 초반대 문제라 쉬워서 푸는 건 몇 분 안걸리는데

문제는 채점 봇을 통과하기가 힘들어서 1번째도 이것저것 뭐가 문제인지 찾고 고치는 데만 몇 시간ㅡ_ㅡ..

정말 문제를 잘 봐야하고 여러 조건에 만족이 되어야 하다보니..

너무 들이는 시간에 비해 의미가 없는 듯 해서 다음에는 그냥 문제만 푸는 형태로 해야 될듯합니다.

 

아오. SyntaxHighlighter 왜 이러지 아래 코드가 반 이상 짤리면서 나오네..

그래서 그냥 Color Scripter로..

 

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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
#include <iostream>
using namespace std;
 
int main()
{
    int row, col;
    int count = 1;
 
    char **MineField = NULL;
    
    whilecin>> row >> col )
    {
        if0>=row||0>=col||100<row||100<col)
            break;
 
        MineField = new char*[row];
        forint i=0; i<row; i++)
            MineField[i] = new char[col+1];
        
        char * szBuffer = new char[100];
        forint i=0; i<row; i++ )
        {
            cin>>szBuffer;
            forint j=0; j<col; j++ )
            {
                MineField[i][j] = szBuffer[j];
                szBuffer[j] = ' ';
            }
        }
 
        forint i=0; i<row; i++)
        {
            forint j=0; j<col; j++ )
            {
                if'*' ==MineField[i][j] )
                    continue;
 
                int Mines = 0;
 
                if( i-1 >= 0 && j-1>=0 )
                {
                    if'*' ==MineField[i-1][j-1] )
                        Mines++;
                }
                if( i-1>= 0 )
                {
                    if'*' ==MineField[i-1][j] )
                        Mines++;
                }
                if( i-1>= 0 && j+1<col)
                {
                    if'*' ==MineField[i-1][j+1] )
                        Mines++;
                }
                if( j-1>= 0 )
                {
                    if'*' ==MineField[i][j-1] )
                        Mines++;
                }
                if( j+1<col )
                {
                    if'*' ==MineField[i][j+1] )
                        Mines++;
                }
                if( i+1 <row && j-1>=0 )
                {
                    if'*' ==MineField[i+1][j-1] )
                        Mines++;
                }
                if( i+1<row )
                {
                    if'*' ==MineField[i+1][j] )
                        Mines++;
                }
                if( i+1<row && j+1 <col)
                {
                    if'*' ==MineField[i+1][j+1] )
                        Mines++;
                }
                
                MineField[i][j] = '0'+Mines;
            }
        }
        cout << endl;
 
        cout << "Field #" << count++ << ":" << endl;
        forint i=0; i<row; i++)
        {
            forint j=0; j<col; j++)
                cout << MineField[i][j];
            cout << endl;
        }
    
        forint j=0; j<row; j++ )
            delete[] MineField[j];
        delete []MineField;
        MineField = NULL;
    }
 
    return 0;
}
cs

'알고리즘 문제 풀이' 카테고리의 다른 글

문제 1. The 3n + 1 problem  (0) 2015.10.17
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/04   »
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
글 보관함