![]() |
Модераторы: bsa |
![]() ![]() ![]() |
|
IBMcorp |
|
|||
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 12.5.2011 Репутация: нет Всего: нет |
Подсчитать количество способов расставить j слонов на доске nxn.
Я на сайте http://e-maxx.ru/algo/bishops_arrangement нашел довольно неплохое объяснение её но при попытки реализации выводит ошибку в строчке vector < vector<int> > d (n*2, vector<int> (k+2)); //error: 'vector' was not declared in this scorp //Подскажите пожалуйста как исправить эту ошибку и что автор делает с её помощью. Вот мой код :
Извиняюсь если этот вопрос уже задавали и ли данную задачу пожалуйста киньте ссылку на эту тему.[code=cpp] Это сообщение отредактировал(а) IBMcorp - 13.5.2011, 01:30 |
|||
|
||||
triclosan |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 515 Регистрация: 18.8.2006 Репутация: 2 Всего: 12 |
мож std::vector ?
|
|||
|
||||
IBMcorp |
|
|||
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 12.5.2011 Репутация: нет Всего: нет |
std::vector- это как я понял создание контейнера? я просто впервые встречаюсь с данной операцией
|
|||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
IBMcorp, шаблон vector находится в пространстве имен std. Поэтому, при каждом упоминании этого контейнера (шаблона) следует указывать std:: перед ним. Или написать сразу после инклюдов using namespace std;, но это не очень хорошо, хотя для маленьких программ подойдет.
std::vector - это ШАБЛОН контейнера "вектор". std::vector<int> - это ТИП контейнера "вектор", содержащего объекты типа int. std::vector<int> IntVector(10, 1); - это ПЕРЕМЕННАЯ типа std::vector<int> изначально содержащая в себе 10 элементов типа int, имеющих значение 1. |
|||
|
||||
IBMcorp |
|
|||
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 12.5.2011 Репутация: нет Всего: нет |
спасибо за объяснение. 1) При вводе после инклудов using namespace std; ошибка с векторами отпала програма запускается но при попытки ввода значенией происходит завершение работы программы.
2) vector < vector<int> > d (n*2, vector<int> (k+2)); В этой строке я так понял происходит создание массива а я могу её заменить просто на int d[n*2][k+2]; ? Это сообщение отредактировал(а) IBMcorp - 12.5.2011, 14:26 |
|||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
IBMcorp, теоретически можешь, если n и k константы известные на момент компиляции
|
|||
|
||||
IBMcorp |
|
|||
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 12.5.2011 Репутация: нет Всего: нет |
сработало но опять же програма запускается но когда он мне выдает окно и я ввожу значения происходит завершение работы программы.
при вводе значений на прямую в коде вроде все нормально даже значения какието выводит а есть какой-то способ проверить программу?? при вводе n = 8 и k= 8 получается отрицательное число(
Это сообщение отредактировал(а) IBMcorp - 12.5.2011, 14:48 |
|||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
конечно есть - отладка называется. Запускаешь в режиме отладки и выполняешь ее построчно.
|
|||
|
||||
IBMcorp |
|
|||
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 12.5.2011 Репутация: нет Всего: нет |
эх что то корявые значения у меня получаются при записи через int d[n*2][k+2]; получаются отрицательные числа а при записи через vector < vector<int> > d (n*2, vector<int> (k+2)); способов расставить 1 офицера меньше чем 10
хотя в принципе количество способов расставить одного офицера он выдает правильно 64 а остальное ... Это сообщение отредактировал(а) IBMcorp - 12.5.2011, 15:56 |
|||
|
||||
IBMcorp |
|
|||
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 12.5.2011 Репутация: нет Всего: нет |
СПАСИБО ОГРОМНОЕ ЗА РАЗЪЯСНЕНИЕ все идеально работает вот код программы если кому понадобится
|
|||
|
||||
borisbn |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 21 Всего: 135 |
IBMcorp, а чтобы нагяднее и понятнее было бы с векторами используй typedef. смотри:
было
стало
![]() Вот уж никогда бы не подумал, что когда-нибудь буду советовать IBM Corporation ![]() -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
||||
|
|||||
IBMcorp |
|
|||
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 12.5.2011 Репутация: нет Всего: нет |
а можно как-нибудь обойтись без этой строчки vector < vector<int> > d (n*2, vector<int> (k+2)); ну в смысле задать её по другому это же вроде по сути создание массива я попробывал её задать как int d[n*2][k+2]; но там появились отрицательные числа
P.s. числа на момент компиляции известны |
|||
|
||||
volatile |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 16 Всего: 85 |
Если n и k являются компайл тайм константами, и вы хотите использовать не вектор, а просто массив, то int d[n*2][k+2]; вполне легальный код. повторяю, Если n и k известны, какие и где отрицательные числа появились? Добавлено через 5 минут и 49 секунд Упс.. ![]() Вовсе они не известны на момент компиляции. Так что, уточните ваши противоречивые высказывания. |
|||
|
||||
IBMcorp |
|
|||
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 12.5.2011 Репутация: нет Всего: нет |
в конкретно в данном случае(доска 2на2; 1 офицер) должен вывести 4 способа а он вы водит чуть ли не 2а миллиарда |
|||
|
||||
volatile |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 16 Всего: 85 |
У вас проблема с инициализацией массива. При инициализации его нулями, выводит как и положено 4. int d[n*2][ k + 2] = {0}; Все остальное не менял. http://liveworkspace.org/code/2241df74ec37...0ea1242d274cd80 В логику работы не вникал. Разберитесь сначала с ней. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "C/C++: Для новичков" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |