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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 22, средняя оценка - 4.64
киракира
0 / 0 / 0
Регистрация: 03.04.2012
Сообщений: 14
#1

Сколько коней можно без угроз друг другу расставить на шахматной доске размером M на N - C++

04.04.2012, 16:48. Просмотров 2954. Ответов 6
Метки нет (Все метки)

Сколько коней можно без угроз друг другу расставить на шахматной доске размером M на N.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.04.2012, 16:48
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Сколько коней можно без угроз друг другу расставить на шахматной доске размером M на N (C++):

Расставить 8 ферзей на шахматной доске 8 на 8, которые не бьют друг друга - C++
Нужно написать программу которая расставляет на шахматной доске 8 ферзей, которые не бьют друг друга. обязательно использование рекурсии,...

На шахматной доске стоят три ферзя. найти ту пару из них которые угрожают друг другу! - C++
помогите пожалуйста, или подскажите как начать)) на шахматной доске стоят три ферзя. найти ту пару из них которые угрожают друг другу!

Найти расстановку двенадцати коней на шахматной доске - C++
Найти расстановку двенадцати коней на шахматной доске, при которой каждое поле будет находиться под ударом одного из них. Написать функцию...

Как много шахматных слонов можно расставить, чтобы они не угрожали друг другу? - C++
Какое наибольшее число слонов можно расставить на шахматной доске так, чтобы никакие из них не угрожали друг другу. Задачу решить численным...

Расставить n ладей на шахматной доске n*n - C++
Вообщем нужно расставить n ладей на шахматной доске n*n Вот то что у меня получилось: #pragma argsused #include<iostream.h> int...

Определить бъют ли две фигуры на шахматной доске друг друга - C++
Привет. Помогите пожалуйста. Даны координаты двух фигур на шахматной доске. Определить бьют ли они друг друга. Фигуры могут быть или двое...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
valeriikozlov
Эксперт C++
4670 / 2496 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
04.04.2012, 18:05 #2
ссылку на задачу можете дать?
Kuzia domovenok
1891 / 1746 / 118
Регистрация: 25.03.2012
Сообщений: 5,925
Записей в блоге: 1
04.04.2012, 19:20 #3
Цитата Сообщение от valeriikozlov Посмотреть сообщение
ссылку на задачу можете дать?
В смысле ссылку? Задача в первом посте. Вопрос действительно нетривиальный. С ферзями, думаю было бы гораздо проще.
valeriikozlov
Эксперт C++
4670 / 2496 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
04.04.2012, 19:25 #4
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
В смысле ссылку?
задача скорее всего с сайта олимпиадных задач с онлайн проверкой. вот эту ссылку и нужно.
diagon
Higher
1929 / 1195 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
04.04.2012, 19:28 #5
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
В смысле ссылку? Задача в первом посте. Вопрос действительно нетривиальный. С ферзями, думаю было бы гораздо проще.
Ну, если вы считаете это нетривиальным, то что вы скажете насчет, например, такой задачи?
dr.curse
388 / 344 / 16
Регистрация: 11.10.2010
Сообщений: 1,907
04.04.2012, 22:42 #6
вот кажись решил, можете проверить?
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
#include <iostream>
#include <vector>
using namespace std;
int main()
{
    int n,m;
    cin >> n >> m;
    vector< vector<int> > a(n+1,vector<int>(m+1,1));
    for (int i=0;i<n;i++)
    {
        for (int j=0;j<m;j++)
            if (a[i][j])
            {
                if (i+2<=n && j+1<=m)
                    a[i+2][j+1]=0;
                if (i+2<=n && j-1>=0)
                    a[i+2][j-1]=0;
                if (i+1<=n && j+2<=m)
                    a[i+1][j+2]=0;
                if (i-1>=0 && j+2<=m)
                    a[i-1][j+2]=0;
                if (i-2>=0 && j+1<=m)
                    a[i-2][j+1]=0;
                if (i-2>=0 && j-1>=0)
                    a[i-2][j-1]=0;
                if (i+1<=n && j-2>=0)
                    a[i+1][j-2]=0;
                if (i-1>=0 && j-2>=0)
                    a[i-1][j-2]=0;
            }
    }
    int k=0;
    for (int i=0;i<n;i++)
        for (int j=0;j<m;j++)
            k+=a[i][j];
    cout << k;
    return 0;
}
kravam
быдлокодер
1694 / 881 / 44
Регистрация: 04.06.2008
Сообщений: 5,441
05.04.2012, 00:53 #7
aram_gyumri, неправильно, поле 6 на 6 даёт 12 вариантов, хотя:
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
предлагаю задуматься, а не лежит ли ответ на поставленный вопрос в области чисто математики? Вот я тут коней понаставлял, если сей алгоритм верен (не доказывал. может ошибаюсь) то максимальное количество коней вычисляется так:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
#include <stdio.h>
using namespace std;
 
int main() {
 int n,m, max;
 cin >> n >> m;
 max= (n*m)/2+ (n*m)%2;  
 printf ("max= %d\n", max);
 getchar ();
 getchar ();
 return 0;
}
Но это всё фигня. Главное- что случилось с форумом? Почему я не могу скопировать код без того, чтобы не увидеть в IDE номера строк?
Миниатюры
Сколько коней можно без угроз друг другу расставить на шахматной доске размером M на N  
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.04.2012, 00:53
Привет! Вот еще темы с ответами:

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

Заполнить двумерный массив размером n*n единицами и нулями как на шахматной доске - C++
Заполнить двумерный массив размером n*n единицами и нулями таким образом, чтобы единицы размещались так, как размещаются на шахматной доске...

На шахматной доске расставлены три фигуры. Определить бьют они друг друга или нет - C++
На шахматной доске расставлены три фигуры. Используя стандартные правила игры узнать бьют они друг друга или нет. Расположение фигур...

Составить программу, которая вычисляет, сколько всего зёрен оказалось на шахматной доске - C++
3. На первую клетку шахматной доски положили 1 зерно, а на каждую следующую клетку на n зёрен больше, чем на предыдущую. Составьте...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
05.04.2012, 00:53
Ответ Создать тему
Опции темы

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