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

Судоку. Задача довольно-таки интересная - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Класс,метод,деструктор http://www.cyberforum.ru/cpp-beginners/thread852679.html
Доброго времени суток! Только начал изучать классы. Задачка у меня, написать прогу в которой отработает:конструктор, деструктор, метод и будут публичные и частные типы данных. Вроде бы по учебной...
C++ Найти ошибку в цикле Программа находит слова из массива MS и заменяет их цифрами из cif, в данном случае MS это для слова ZERO И все работает правильно, кроме, того, что цикл пытается выполнится лишний раз и это... http://www.cyberforum.ru/cpp-beginners/thread852673.html
Необходимо определить пересекаются ли прямоугольники C++
Осталась последняя программа на практике: "Даны два прямоугольника, стороны которых параллельны или перпендикулярны осям координат. Известны координаты левого нижнего угла каждого из них и стороны их...
Сделал задачу, не могу понять, почему не выводит плавоющие запятые! C++
Условия задачи: Составить программу, которая будет вычислять следующую последовательность y= 1+ 1/2 + 1/3 + 1/4 + ... 1/n (Если кому то не очень понятно, то вот скрин формулы: скриншот формулы ...
C++ Создать класс - данные - абстрактный базовый класс. Создать производные классы http://www.cyberforum.ru/cpp-beginners/thread852602.html
Всем привет! У меня вот такая проблема.... Создать класс - данные - абстрактный базовый класс. Создать производные классы - данные типа сигнал, данные типа результат обработки и вспомогательные...
C++ Поменять местами в квадратной матрице строку со столбцом, содержащие максимальный элемент Массив я задал,а дальше через цикл ,но не пойму как это описать,помогите. Вот что есть пока: #include <iostream> #include <clocale> #include <conio.h> #include <iomanip> using namespace... подробнее

Показать сообщение отдельно
Ternsip
660 / 188 / 6
Регистрация: 10.05.2012
Сообщений: 595
01.05.2013, 11:55
Lonter,
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
#include <iostream>
#include <set>
#include <vector>
#include <limits>
#include <queue>
#include <string>
#include <map>
#include <algorithm>
#include "Windows.h"
#include <conio.h>
 
using namespace std;
 
int main(){            
    freopen("input.txt", "rt", stdin);
    freopen("output.txt", "wt", stdout);
    int n;
    cin >> n;
    vector <set<int>> col(n), row(n);
    int m = sqrt((double)n);
    vector < vector <set <int> > > block(m, vector <set <int> > (m));
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n; j++) {
            int temp;
            cin >> temp;
            row[i].insert(temp);
            col[j].insert(temp);
            block[i/m][j/m].insert(temp);
        }
    }
    for (int i = 0; i < m; i++)
        for (int j = 0; j < m; j++)
            if (block[i][j].size() != n) {
            cout << "NO";
            return 0;
        }
    for (int i = 0; i < n; i++)
        if (col[i].size() != n || row[i].size() != n) {
            cout << "NO";
            return 0;
        }
    cout << "YES";
    return 0;
}
Добавлено через 17 секунд
Lonter, пример ввода :
9
5 6 7 8 2 3 9 4 1
9 3 1 7 6 4 5 8 2
8 2 4 9 5 1 3 6 7
2 4 8 3 1 5 7 9 6
6 7 9 2 4 8 1 3 5
1 5 3 6 9 7 8 2 4
7 8 2 1 3 6 4 5 9
3 9 5 4 7 2 6 1 8
4 1 6 5 8 9 2 7 3

Добавлено через 56 секунд
Lonter, считывается из файла input.txt выводится в файл output.txt

Добавлено через 3 минуты
Lonter,
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
#include <iostream>
#include <set>
#include <vector>
#include <algorithm>
 
using namespace std;
 
int main(){            
    freopen("input.txt", "rt", stdin);
    freopen("output.txt", "wt", stdout);
    int n;
    cin >> n;
    vector <set<int>> col(n), row(n);
    int m = sqrt((double)n);
    vector < vector <set <int> > > block(m, vector <set <int> > (m));
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n; j++) {
            int temp;
            cin >> temp;
            if (row[i].count(temp) || col[j].count(temp) || block[i/m][j/m].count(temp)) {
                cout << "NO";
                return 0;
            }
            row[i].insert(temp);
            col[j].insert(temp);
            block[i/m][j/m].insert(temp);
        }
    }
    cout << "YES";
    return 0;
}
Добавлено через 3 минуты
Lonter,
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
#include <iostream>
#include <vector>
#include <algorithm>
 
using namespace std;
 
int main(){            
    freopen("input.txt", "rt", stdin);
    freopen("output.txt", "wt", stdout);
    int n;
    cin >> n;
    vector <vector <bool>> col(n, vector <bool>(n)), row(n, vector <bool>(n, false));
    int m = sqrt((double)n);
    vector < vector < vector <bool> > > block(m, vector < vector <bool> > (m, vector <bool>(n, false)));
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n; j++) {
            int temp;
            cin >> temp; temp--;
            if (row[i][temp] || col[j][temp] || block[i/m][j/m][temp]) {
                cout << "NO";
                return 0;
            }
            row[i][temp] = col[j][temp] = block[i/m][j/m][temp] = true;
        }
    }
    cout << "YES";
    return 0;
}
Добавлено через 17 секунд
Lonter, вот вам 3 варианта решения.

Добавлено через 5 минут
Lonter,
Пример ввода :
4
1 2 3 4
4 3 2 1
3 4 1 2
2 1 4 3

Добавлено через 45 секунд
Lonter, помните, n - должно быть квадратом натурального числа
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru