Статистика
Всего в нашей базе более 4 327 663 вопросов и 6 445 976 ответов!

Даны цело численный массив А [1: n] и число М. Найти множество элементов А [i1], А [i2], ..., А [ik] (1< i1 < ... < ik < n), что А [i1] + А

10-11 класс

[i2] + ... А [ik] = М.

Swen321 27 янв. 2015 г., 21:33:23 (9 лет назад)
Рейтинг
+ 0 -
0 Жалоба
+ 0 -
напк
28 янв. 2015 г., 0:25:04 (9 лет назад)

описание алгоритма: задан список А и число M, n = len(A). для того чтобы найти все возможные варианты выборки из А необходимо построить множество двоичных чисел от 1 до 2^n-1 и складывать только те индексы разряд которого которого в двоичном числе равен 1, т.е. для двоичного числа 1100 это будут индексы 2 и 3.
Если сумма будет равна М вывести последовательность индексов, иначе идем далее
Язык Python
A=[21,4,5,4,32] #Задание массива А
M = 9             #Задание М
for i in range(1, 2**len(A)-1): # для всех i от 1 до 2^n-1
  ind = []                             # список индексов используемых в данной итерации
  cnt = 0                             # сумма элементов А
  for j in range(len(A)):          # для всех j от 0 до n
    if i&2**j:                          # Если индекс есть в бинарной записи i, то
      cnt += A[j]                    # прибавить к сумме A[j]
      ind.append(str(j))                 # запомнить индекс
      if cnt > M: break            # если сумма больше M выходим из цикла
  if cnt == M:                       # если сумма равна M
    print ', '.join(ind)               # печатаем список эффективных индексов

для данной программы будет выдано две строки
1,2
2,3

Ответить

Другие вопросы из категории

Помогите решить задачи по паскалю:

1. модифицируйте предыдущий пример, так чтобы программа определяла максимальный и минимальный элемент массива
2. Напишите программу, которая бы определяла среднее арифметическое значение элементов массива (вещественная величина типа real)
Начало:
var a: array[1..10] of integer;
i: integer;
begin
а как дальше?

Предыдущий пример:
var a: array[1..10] of integer;
i: integer;
begin
randomize;
for i:=1 to 10 do
begina[i]:=random(40)-20;
end;
for i:=1write(a[i]:4);
end.

Для какого из указанных

значений X истинно высказывание

¬ ((X>2) → (X>3))?

1) 1 2) 2
3) 3

Что из перечисленного нельзя отнести к недостаткам искусственных нейронных сетей: а) сравнительная дороговизна аппаратной реализации; б) трудность

тиражирования накопленных знаний; в) для больших сетей невозможность заранее даже приблизительно оценить время обучения сети г) создание новых знаний внутри сети в процессе переработки входных данных.

Требовалось написать программу, которая вводит с кла­виатуры

координаты точки на плоскости (х,у — действи­тельные числа) и определяет
принадлежность точки за­штрихованной области, включая ее границы. Програм­мист
торопился и написал программу неправильно.

Читайте также

1.Дан целочисленный массив X(N). Найти сумму четных элементов массива .Если эта сумма больше заданного числа Z , то у элементов , расположенных на

нечетных местах , сменить знак на противоположный ,иначе выдать соответствующее сообщение.

2.Дан массив X(N,M) . Среди четных столбцов массива найти сумму положительных элементов

3.Найти произведение элементов каждого столбца массива принадлежащих промежутку [2,6] . Из полученных значений сформировать одномерный массив.

Паскаль помогите пжл!!!!!! Дан одномерный массив, состоящий из вещественных элементов. Найти произведение элементов массива,

расположенных между максимальным и минимальным элементами.

Дан одномерный массив, состоящий из вещественных элементов. Найти произведение элементов массива, расположенных между максимальным по модулю и минимальным по модулю элементами

ну или исправьте мое пжл

program fgf;
var mas:array[1..100] of real;
max,min:real;
i,n,c,b:shortint;
p:real;
f1,g:text;
begin;
assign (f1, 'input.txt');
reset (f1);
readln (f1, n);

for i:=1 to N do read (mas[i]);
max:=mas[i];
for i:=2 to N do begin
if mas[i]>max then begin
max:=mas[i];
c:=i;
end;
end;
min:=mas[1];
for i:=2 to N do begin
if mas[i]<min then begin
max:=mas[i];
b:=i;
end;
end;
close(f1);
assign (g, 'output.txt');
rewrite (g);
p:=1;
if b<c then I:=b+1 and c-1

else for I:=c+1 to b-1 do p:=p*mas[i];

if (n<3) or (b+1=c) or (c+1=b) then writeln(g,'0.00') else write(p:3:3) ;

close (g);
end.

задача: Дан массив A состоящий из 10 элементов,заполнить его случайными числами и найти сумму элементов. решите задачу нескольк

ими способами,вкратце обьяснить что вы написали чтобы понятно было)



Вы находитесь на странице вопроса "Даны цело численный массив А [1: n] и число М. Найти множество элементов А [i1], А [i2], ..., А [ik] (1&lt; i1 &lt; ... &lt; ik &lt; n), что А [i1] + А", категории "информатика". Данный вопрос относится к разделу "10-11" классов. Здесь вы сможете получить ответ, а также обсудить вопрос с посетителями сайта. Автоматический умный поиск поможет найти похожие вопросы в категории "информатика". Если ваш вопрос отличается или ответы не подходят, вы можете задать новый вопрос, воспользовавшись кнопкой в верхней части сайта.