Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Задача о прямоугольниках С++ - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ подскажите почему программа работает неправильно http://www.cyberforum.ru/cpp-beginners/thread370478.html
Использование двумерного массива как аргумента функции и возвращаемого значения функции выдает предупреждение:1>------ Build started: Project: Glushkov_double_massive_and_func, Configuration:...
C++ бинарные деревья Вот у меня есть программа, которая создает бинарное дерево из массива целых чисел. #include <iostream> #include <conio.h> using namespace std; struct bin_tree { int value; bin_tree... http://www.cyberforum.ru/cpp-beginners/thread370476.html
C++ Определить номер первого из столбцов матрицы, содержащих хотя бы один нулевой элемент
Задача с двумерным массивом на C (не C++). Дана целочисленная прямоугольная матрица. Определить номер первого из столбцов, содержащих хотя бы один нулевой элемент. Характеристикой строки...
C++ Динамическое выделение памяти в dll
Читая Рихтера наткнулся вот на такое замечание:NOTE: Важно понимать, что единое адресное пространство состоит из одного исполняемого модуля и нескольких DLL-модулей. Одни из них могут быть...
C++ Транспонирование матрицы http://www.cyberforum.ru/cpp-beginners/thread370438.html
int _tmain(int argc, _TCHAR* argv) { const int n=5; int a; srand(GetTickCount()); for (int i=0; i < n; i++) for (int j=0; j < n; j++) a=rand()%10; for (int i=0;i<n;i++) {
C++ Перегрузка оператора ==, в классе Матрица #ifndef MATRIX_H #define MATRIX_H template <class T> class Matrix { public: Matrix(int Rows, int Cols); ~Matrix(); int RowsCount()const; подробнее

Показать сообщение отдельно
Mayonez
380 / 272 / 21
Регистрация: 26.12.2009
Сообщений: 875
22.10.2011, 15:15
C++
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
#include <fstream>
#include <vector>
 
using namespace std;
 
void removeRectangle(int x, int y, vector<vector<bool> > &v)
{
    v[x][y] = 0;
    struct
    {
        int x;
        int y;
    } moves[] =
    {
        { 0,  1},
        { 0, -1},
        { 1,  0},
        {-1,  0}
    };
    for(size_t i = 0; i < sizeof moves / sizeof *moves; i++)
    {
        const int nx = x + moves[i].x;
        const int ny = y + moves[i].y;
        if(nx >= 0 && nx < v.size() &&
            ny >= 0 && ny < v[nx].size() && v[nx][ny])
            removeRectangle(nx, ny, v);
    }
}
 
int main()
{
    ifstream fin("input.in");
    vector<vector<bool> > field;
    vector<bool> lines;
    while(!fin.eof())
    {
        char ch = fin.get();
        if(ch == ' ')
            continue;
        if(ch == '\n')
        {
            field.push_back(lines);
            lines.clear();
            continue;
        }
        lines.push_back(ch - '0');
    }
 
    int counter = 0;
    for(size_t i = 0; i < field.size(); i++)
        for(size_t j = 0; j < field[i].size(); j++)
            if(field[i][j])
            {
                removeRectangle(i, j, field);
                counter++;
            }
    ofstream fout("output.out");
    fout << counter << endl;
    return 0;
}
Добавлено через 1 минуту
не самый эффективный вариант, зато рабочий
2
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru