Nadegdasb
?>

Сдля курсовой работы, ! это важно. на с++ или с! мальчик антон решает вступительную работу в летний лагерь. в ней n , которые можно выполнять в произвольном порядке. разные требуют разного времени для решения. при этом известно, что если с номером i выполнять j-м по счету, антону потребуется ti*j времени: чем больше думаешь, тем больше устаешь. например, если начать с первой , а затем выполнить вторую, то потребуется t1*1 + t2*2 времени, а если выполнить сначала вторую , а затем первую – то t2*1 + t1*2. подскажите антону, в каком порядке нужно решать , чтобы на выполнение всей работы ушло как можно меньше времени. входные данные в первой строке вводится число n, во второй строке —n чисел через пробелt1, t2, …, tn, разделенные пробелами. все числа целые и удовлетворяют следующим ограничениям: 0 < n ≤ 10, 0 < ti ≤ 100. выходные данные требуется вывести сначала минимальное время, за которое можно решить все , а затем – номера в том порядке, в котором их нужно решать, чтобы уложиться в это время. все числа разделяются пробелами. если решений несколько, нужно выдать любое из них.

Информатика

Ответы

tooltechnic
Отсортируйте массив по не возрастанию (вместе с индексами) и подсчитайте сумму  s = s+b[i]*(i+1) - индексы от нуля.
Это и будет наименьшее время.

#include <iostream>
#include <cstdlib>
using namespace std;

int main() {
   int n,i,s;
   bool priz=true;
   cin>>n;
   int b[n],c[n];
   for (int i=0; i<n; i++)
   { 
       cin>>b[i];
       c[i]=i+1;
   }  
// сортировка масcива по не возрастанию
   while (priz)
   {
     priz=false;
     for (int i=0; i<n-1; i++)
     {
       if (b[i]<b[i+1])
       {
         swap(b[i],b[i+1]);
         swap(c[i],c[i+1]);              
         priz=true;
       }
     } 
   }
   s=0;
   for (int i=0; i<n; i++)  s+=b[i]*(i+1);
   cout<<s<<endl;
   for (int i=0; i<n; i++)  cout<<c[i]<<" ";
   cout<<endl;
   system("pause");
   return(0);
}

Ввод - вывод:

6
10 21 13 36 41 9
332
5 4 2 3 1 6
vahmistrova
Const nx=30;var i,j,p,n:integer;A:array[1..nx,1..nx] of integer;d,Sn,min:real;begin p:=1;write('Введите размер матрицы');Read(n);for i:=1 to n do beginfor j:=1 to n do beginA[i,j]:=random(3)-2;write(A[i,j]:4);end;writeln;end;writeln;writeln;for i:=1 to n do beginfor j:=1 to n do beginif i = j then begin if A[i,j]<> 0 then p:=p* A[i,j];write(A[i,j]:4);endelse write(' ':4);end;writeln;end;write('p =',p);writeln;writeln;for i:=1 to n do beginfor j:=1 to n do beginif (i= n -j +1) then begin if A[i,j]<> 0 then p:=p* A[i,j];write(A[i,j]:4);endelse write(' ':4);end;writeln;end;write('p =',p);end.
ellyb106786
А) не ( A или не В и С ) упрощаем выражение и получаем
not(a) and (b or not(c))

Код на Python:

for a in range(0,2):
    for b in range(0,2):
        for c in range(0,2):
            f=not(a) and (b or not(c))
            print('A = ',a,'B = ',b,'C = ',c,'F = ',f)

б) А и не ( В и или не С) получим такое выражение:
a and (b or not(c))

Код на Python:

for a in range(0,2):
    for b in range(0,2):
        for c in range(0,2):
            f=a and (b or not(c))
            print('A = ',a,'B = ',b,'C = ',c,'F = ',f)


в) не ( не А или В и С)  преобразуем:
a and (b or c)

Код на Python:

for a in range(0,2):
    for b in range(0,2):
        for c in range(0,2):
            f=a and (b or c)
            print('A = ',a,'B = ',b,'C = ',c,'F = ',f)

Ответить на вопрос

Поделитесь своими знаниями, ответьте на вопрос:

Сдля курсовой работы, ! это важно. на с++ или с! мальчик антон решает вступительную работу в летний лагерь. в ней n , которые можно выполнять в произвольном порядке. разные требуют разного времени для решения. при этом известно, что если с номером i выполнять j-м по счету, антону потребуется ti*j времени: чем больше думаешь, тем больше устаешь. например, если начать с первой , а затем выполнить вторую, то потребуется t1*1 + t2*2 времени, а если выполнить сначала вторую , а затем первую – то t2*1 + t1*2. подскажите антону, в каком порядке нужно решать , чтобы на выполнение всей работы ушло как можно меньше времени. входные данные в первой строке вводится число n, во второй строке —n чисел через пробелt1, t2, …, tn, разделенные пробелами. все числа целые и удовлетворяют следующим ограничениям: 0 < n ≤ 10, 0 < ti ≤ 100. выходные данные требуется вывести сначала минимальное время, за которое можно решить все , а затем – номера в том порядке, в котором их нужно решать, чтобы уложиться в это время. все числа разделяются пробелами. если решений несколько, нужно выдать любое из них.
Ваше имя (никнейм)*
Email*
Комментарий*

Популярные вопросы в разделе

Дружинин
kronid12
krasnova1977
kirieskamod262
preida-2
Designer
ВасилийКлимова1695
манукян29
grishin
Ионов202
ekaterinava90
antonkovalev89
Динков
artbogema2016
extremhunter