Есть массив из 12 элементов (для удобства считаем что все положительные) . Нужно найти все вариации этого массива, когда числа меняют знаки. К примеру:
1)+,+,+++,+++,+++,+
2)-,+,+++,+++,+++,+
3)-,-,+++,+++,+++,+
4)-,-,-++,+++,+++,+
и т. д. пока не получатся все варианты.
Другие языки программирования и технологии
Помогите найти все возможные вариации положительных и отрицательных чисел в массиве.
Тупо цикл от 0 до 2^12, если взятый бит счетчика 0, то -, иначе +:
#include <iostream>
int main() {
for (int v = 0; v < 1 << 12; ++v) {
for (int c = 1; c < 1 << 12; c <<= 1) std::cout << (v & c ? "+ " : "- ");
std::cout << std::endl;
}
}
Напечатает:
- - - - - - - - - - - -
+ - - - - - - - - - - -
- + - - - - - - - - - -
+ + - - - - - - - - - -
- - + - - - - - - - - -
+ - + - - - - - - - - -
- + + - - - - - - - - -
+ + + - - - - - - - - -
- - - + - - - - - - - -
+ - - + - - - - - - - -
- + - + - - - - - - - -
+ + - + - - - - - - - -
- - + + - - - - - - - -
+ - + + - - - - - - - -
- + + + - - - - - - - -
+ + + + - - - - - - - -
- - - - + - - - - - - -
+ - - - + - - - - - - -
- + - - + - - - - - - -
+ + - - + - - - - - - -
- - + - + - - - - - - -
+ - + - + - - - - - - -
- + + - + - - - - - - -
+ + + - + - - - - - - -
- - - + + - - - - - - -
+ - - + + - - - - - - -
- + - + + - - - - - - -
...
+ + - - + + + + + + + +
- - + - + + + + + + + +
+ - + - + + + + + + + +
- + + - + + + + + + + +
+ + + - + + + + + + + +
- - - + + + + + + + + +
+ - - + + + + + + + + +
- + - + + + + + + + + +
+ + - + + + + + + + + +
- - + + + + + + + + + +
+ - + + + + + + + + + +
- + + + + + + + + + + +
+ + + + + + + + + + + +
#include <iostream>
int main() {
for (int v = 0; v < 1 << 12; ++v) {
for (int c = 1; c < 1 << 12; c <<= 1) std::cout << (v & c ? "+ " : "- ");
std::cout << std::endl;
}
}
Напечатает:
- - - - - - - - - - - -
+ - - - - - - - - - - -
- + - - - - - - - - - -
+ + - - - - - - - - - -
- - + - - - - - - - - -
+ - + - - - - - - - - -
- + + - - - - - - - - -
+ + + - - - - - - - - -
- - - + - - - - - - - -
+ - - + - - - - - - - -
- + - + - - - - - - - -
+ + - + - - - - - - - -
- - + + - - - - - - - -
+ - + + - - - - - - - -
- + + + - - - - - - - -
+ + + + - - - - - - - -
- - - - + - - - - - - -
+ - - - + - - - - - - -
- + - - + - - - - - - -
+ + - - + - - - - - - -
- - + - + - - - - - - -
+ - + - + - - - - - - -
- + + - + - - - - - - -
+ + + - + - - - - - - -
- - - + + - - - - - - -
+ - - + + - - - - - - -
- + - + + - - - - - - -
...
+ + - - + + + + + + + +
- - + - + + + + + + + +
+ - + - + + + + + + + +
- + + - + + + + + + + +
+ + + - + + + + + + + +
- - - + + + + + + + + +
+ - - + + + + + + + + +
- + - + + + + + + + + +
+ + - + + + + + + + + +
- - + + + + + + + + + +
+ - + + + + + + + + + +
- + + + + + + + + + + +
+ + + + + + + + + + + +
вижу кривой, но довольно простой вариант.
можно как бы через двоичные числа сделать
создадим массив B = 0 0 0 0 0 0 0 0 0 0 0 0 (12 нулей)
потом пока он не станет равен 1 1 1 1 1 1 1 1 1 1 1 1
потом циклом проходим по вашему первому массиву, те числа элемент i котрых совпадет с элементом i = 0 выведем как положительные, если B == 1, то отрицательными.
В конце прохода цикла прибавляем единицу к нашему "двоичному числу" помещенному в массив. Это можно в отдельную функцию вынести вообще.
можно как бы через двоичные числа сделать
создадим массив B = 0 0 0 0 0 0 0 0 0 0 0 0 (12 нулей)
потом пока он не станет равен 1 1 1 1 1 1 1 1 1 1 1 1
потом циклом проходим по вашему первому массиву, те числа элемент i котрых совпадет с элементом i = 0 выведем как положительные, если B == 1, то отрицательными.
В конце прохода цикла прибавляем единицу к нашему "двоичному числу" помещенному в массив. Это можно в отдельную функцию вынести вообще.
Похожие вопросы
- Число ноль это положительное или отрицательное число.
- Подсчитайте, сколько среди данных N чисел нулей, положительных и отрицательных чисел! Помогите решить пж.
- Помогите найти алгоритм подбора множителей к числам заданного массива, сумма произведений которых равна заданному числу
- СРОЧНО ПАСКАЛЬ задан одномерный массив с (1..10), дать ответ: каких элементов больше: положительных или отрицательных
- Дан целочисленный двумерный массив, размерности n х m. Заменить все отрицательные числа нулем
- Разделить массив с числами на несколько массивов, чтобы сумма чисел в массивах была равна.
- Pascal . Дан массив вещественных чисел. Найти сумму элементов, номера которых являются простыми числами
- Даны 3 целых числа. Возвести в квадрат отрицательные числа и в третью степень - положительные (число 0 не изменять)
- НА C# НАПИСАТЬ КОД Найти сумму целых отрицательных чисел, кратных 5 и принадлежащих интервалу [-20; 20].
- Как определить отрицательные числа?
можно как бы через двоичные числа сделать
создадим массив B = 0 0 0 0 0 0 0 0 0 0 0 0 (12 нулей)
потом пока он не станет равен 1 1 1 1 1 1 1 1 1 1 1 1
потом циклом проходим по вашему первому массиву, те числа элемент i котрых совпадет с элементом i = 0 выведем как положительные, если B == 1, то отрицательными.
В конце прохода цикла прибавляем единицу к нашему "двоичному числу" помещенному в массив. Это можно в отдельную функцию вынести вообще.