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

Посчитать количество пустых клеток шахматной доски, которые не бьются ни одним ферзем - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Найти количество повторяющихся в массиве цифр http://www.cyberforum.ru/cpp-beginners/thread177084.html
Помогите у меня задача:"Мади подарили новый блокнот. Ему очень понравился подарок, но единственное, что его смутило, это то, что страницы блокнота не пронумированны. Мади решил пронумеровать страницы своего блокнота от 1 до N. Так как Мади отличный программист, он заранее посчитал сколько раз ему придется написать каждую цифру. А вам слабо? Формат входных данных Число N (1<=N<1000000000)...
C++ Теория массового обслуживания задание: Пусть имеется обслуживающая система из n обслуживающих аппара-тов. Работа этой системы разбита на такты. В течение одного такта может одна заявка стать в очередь и одна заявка приступить к обслуживанию, (разумеется, если аппарат свободен). Вероятность заявки поступить на обслуживание Р(A), вероятность обслужить заявку P(B), вероятность заявки покинуть очередь после Т... http://www.cyberforum.ru/cpp-beginners/thread177073.html
C++ подделать программку
ребят помогите,есть программа написанная,ее нужно немного изменить на мой вариант вот есть рабочая 6-го варианта,нужно подправить ее по 3-ий вариант, заранее благодарен #include <iostream.h> #include <conio.h> #include <graphics.h> #include <math.h> #define PATHDRIVER "C:\\temp\\lng\\bc\\bgi\\"
C++ Найти количество столбцов матрицы, которые не имеют ни одного нулевого элемента
дано целочисельную прямокутную матрицу.Найти: 1)Количество столбцов которые неимеют ниодново нульового елемента. 2)номер рядка в котором находитса найдолшая последовательность одинакових елементов.
C++ Найти количество элементов, расположенных после последнего максимального элемента http://www.cyberforum.ru/cpp-beginners/thread177011.html
Minmax17. Дано целое число N и набор из N целых чисел. Найти количество элементов, расположенных после последнего максимального элемента.
C++ Разделить число на составляющие и найти искомую цифру Программа, которая разделяет число на состовляющие и находит искомую цифру, вот, то, что получилось: # include <stdio.h> void main() { int c,p,o,z=0; printf("cifra="); подробнее

Показать сообщение отдельно
archinko
13 / 13 / 2
Регистрация: 02.03.2010
Сообщений: 29
17.10.2010, 02:20     Посчитать количество пустых клеток шахматной доски, которые не бьются ни одним ферзем
Добавлю и я свой кривой вариант

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
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
#include <iostream>
#include <stdlib.h>
 
using namespace std;
 
class Table{
    int N;
    int **T;
    public:
        Table();
        Table(int raz);
        void AddFerz(int x,int y);
        void showTable();
        int ZeroCount();
};
 
Table::Table(int raz)
{
    N=raz; 
    T=(int**)calloc(N,sizeof(int*));
    for(int n=0;n<N;n++)
        T[n]=(int*)calloc(N,sizeof(int));
    for(int n=0;n<N;n++)
    {   
        for(int k=0;k<N;k++)
        {
            T[n][k]=0;
        }
    }   
}
 
void Table::AddFerz(int x,int y)
{
    T[x][y]=1;
    for(int n=1;n<N;n++)
    {
        if(x+n<N&&y<N&&y>=0&&x+n>=0)T[x+n][y]=1;
        if(x-n<N&&y<N&&y>=0&&x-n>=0)T[x-n][y]=1;
        if(x<N&&y+n<N&&y+n>=0&&x>=0)T[x][y+n]=1;
        if(x<N&&y-n<N&&y-n>=0&&x>=0)T[x][y-n]=1;
 
        if(x+n<N&&y+n<N&&y+n>=0&&x+n>=0)T[x+n][y+n]=1;
        if(x-n<N&&y-n<N&&y-n>=0&&x-n>=0)T[x-n][y-n]=1;
        if(x+n<N&&y-n<N&&y-n>=0&&x+n>=0)T[x+n][y-n]=1;
        if(x-n<N&&y+n<N&&y+n>=0&&x-n>=0)T[x-n][y+n]=1;
        
    }
}
 
void Table::showTable()
{
    for(int n=0;n<N;n++)
    {   
        for(int k=0;k<N;k++)
        {
        cout<<T[n][k]<<" ";
        }
        cout<<endl;
    }
}
 
int Table::ZeroCount()
{
    int res=0;
    for(int n=0;n<N;n++)
    {
        for(int k=0;k<N;k++)
        {
            if(!T[n][k]) res++;
        }
    }
    return res;
}
 
    
int main()
{
    int N,K,**ferzi;
    cin>>N>>K;
    ferzi=(int**)calloc(2,sizeof(int*));
    ferzi[0]=(int*)calloc(K,sizeof(int));
    ferzi[1]=(int*)calloc(K,sizeof(int));
    for(int n=0;n<K;n++)
    {
        cin>>ferzi[0][n]>>ferzi[1][n];
        --ferzi[0][n];
        --ferzi[1][n];
    }
 
    Table t(N);
    for(int n=0;n<K;n++)
        t.AddFerz(ferzi[0][n],ferzi[1][n]);
    
    t.showTable();
    cout <<endl<< t.ZeroCount();
    return 777;
}
Кстати в примере неправильный ответ. Если я правильно понял входные данные, то на доске размером 3х3 с двумя ферзями [3][3] и [2][3] все клетки будут биты, то есть ответ 0.

Добавлено через 30 минут
В коде Somebody неправильно выводит ответ. Походу сдесь
C++
1
cout << n * n - s
s остается нулем. Тестил примером.
 
Текущее время: 08:59. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru