program noname; uses crt; var a:array[1..1000,1..1000] of integer; i,j,min,n,m,l:integer; begin clrscr; write('n='); readln(n); write('m='); readln(m); for i:=1 to n do for j:=1 to m do begin write('a[',i,',',j,']='); readln(a[i,j]); end; for i:=1 to n do begin writeln; for j:=1 to m do write(a[i,j],' '); end; writeln;
for i:=1 to n do begin min:=0; for j:=1 to m do if min>a[i,j] then begin min:=a[i,j]; l:=j; end; if min<>0 then writeln ('v ',i,' stroke indexy poslednego otricatelnogo chisla = ',i,',',l) else writeln ('v ',i,' stroke otricatelnyh chisel net'); end; readkey; end.
Задача на динамическое программирование. Советую почитать поподробнее на эту тему в интернете. Подобные задачи для изучения: платная лестница, кузнечик, последовательность Фибоначчи. #include <iostream> #include <cmath> using namespace std; int main() { int n; cin >> n; int height[n]; for(int i=0; i<n; i++) cin >> height[i]; int energy[n]; for(int i=1; i<n; i++) energy[i] = energy[i-1] + abs(height[i]-height[i-1]); cout << height[n-1]; return 0; }
Из условия видно, что количество оценок, распределенных экзаменатором различное и вопрос задачи указывает на одну из всех возможных оценок, поэтому воспользуемся подходом к определению количества информации для неравновероятных событий, а именно формулой Шеннона.Обозначим i4 – количество информации в сообщении "Абитуриент Сидоров получил четверку", i4или3 – количество информации в сообщении "Абитуриент Иванов не сдал экзамен на отлично", I - информационный объем зрительного сообщения о полученной оценки абитуриентом Сидоровым, к – показатель определенной оценки, р3, р4, р5 – вероятности выставления троек, четверок и пятерок соответственно, р4или3 – вероятность выставления оценки не отлично, тогда i4 или 3=3 -log27 бита, i4 = 2 бита. Основные формулы:
program noname;
uses crt;
var
a:array[1..1000,1..1000] of integer;
i,j,min,n,m,l:integer;
begin
clrscr;
write('n='); readln(n);
write('m='); readln(m);
for i:=1 to n do
for j:=1 to m do begin
write('a[',i,',',j,']=');
readln(a[i,j]);
end;
for i:=1 to n do begin writeln;
for j:=1 to m do
write(a[i,j],' ');
end;
writeln;
for i:=1 to n do begin
min:=0;
for j:=1 to m do
if min>a[i,j] then begin min:=a[i,j]; l:=j; end;
if min<>0 then
writeln ('v ',i,' stroke indexy poslednego otricatelnogo chisla = ',i,',',l)
else writeln ('v ',i,' stroke otricatelnyh chisel net');
end;
readkey;
end.