Форум программистов, компьютерный форум, киберфорум
Наши страницы
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
Mike_Boone
26 / 17 / 8
Регистрация: 11.02.2018
Сообщений: 164
Завершенные тесты: 3
1

Оптимизация

22.07.2018, 22:42. Просмотров 763. Ответов 3
Метки нет (Все метки)

Доброго времени суток. Программа не проходит по времени выполнения тесты, не знаю даже, как можно ее оптимизировать.
Помогите пожалуйста, знающие люди.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
    Var a: array[1..50000] of integer;
Var b: array[1..50000] of integer;
  Var c,d,i,k,g: integer;
  
  begin
  d:= 0;
  read(c);
  for i:= 1 to c do 
  read(a[i]);
  read(k);
  for i:=1 to k do 
  read(b[i]);
  
  for i:=1 to c do
  for g:=1 to k do
  begin
  if a[i] + b[g] = 10000 then 
  d:= d + 1;
  end;
  if d > 0 then
   writeln('YES') 
   else writeln('NO');
  end.
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.07.2018, 22:42
Ответы с готовыми решениями:

Оптимизация кода
Помогите пожалуйста. Такая проблема всплыла, нужно оптимизировать код, чтобы он выполнялся за 1...

Оптимизация задачи
Помогите оптимизировать программу если это возможно и может кто переписать её на другой язык...

Оптимизация кода
Вот код var a,b,c,d:integer; begin a:=random(30000); b:=random(30000); c:=random(30000);...

Оптимизация. ДЛП
Здравствуйте. Помогите, пожалуйста. По курсовой надо "Оптимизация задач дробно-линейного...

Оптимизация программы по быстродействию
Помогите плиз, очень нужна помощь, заранее спасибо! Что убрать, что изменить?! //Вычислить...

3
VTsaregorodtsev
582 / 535 / 77
Регистрация: 19.02.2010
Сообщений: 1,938
22.07.2018, 23:52 2
Попробуйте в 17ой строке вынести a[i] в локальную переменную, т.е. чтение из массива в лок.переменную сделайте вне внутреннего цикла.

Ну или может стоит повнимательнее почитать условия задачи. Если там сказано о работе только с неотрицательными числами - то можно при вводе данных при обнаружении чисел >10000 их сразу пропускать (уменьшая при этом как длину массива "с" или "к" на 1, так и индекс соотв.цикла).
0
Cyborg Drone
Модератор
5840 / 3430 / 2545
Регистрация: 17.08.2012
Сообщений: 10,997
23.07.2018, 00:29 3
Лучший ответ Сообщение было отмечено Mike_Boone как решение

Решение

VTsaregorodtsev, ??? Все переменные в этой программе глобальные.
Копирование элемента массива в буфер в данном случае не ускоряет выполнения. Можно избавиться от операции сложения в цикле и не просматривать все элементы:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
var
  a, b: array[1..50000] of integer;
  c, i, k, g, t: integer;
  f: boolean;
 
begin
  read(c);
  for i := 1 to c do read(a[i]);
  read(k);
  for i := 1 to k do read(b[i]);
  for i := 1 to c do
    begin
      t := 10000 - a[i];
      for g := 1 to k do
        begin
          f := b[g] = t;
          if f then break
        end;
      if f then break
    end;
  if f
    then writeln('YES')
    else writeln('NO')
end.
или так:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
var
  a, b: array[1..50000] of integer;
  c, i, k, g, t: integer;
 
begin
  read(c);
  for i := 1 to c do read(a[i]);
  read(k);
  for i := 1 to k do read(b[i]);
  for i := 1 to c do
    begin
      t := 10000 - a[i];
      for g := 1 to k do
        if b[g] = t
          then begin
            writeln('YES');
            halt
          end
    end;
  writeln('NO')
end.
Может быть, и не так, поскольку ТС не потрудился озвучить задание, а у меня нет полной уверенности, что требуется определить факт наличия в массивах a и b элементов, сумма которых равна 10000...
1
Mike_Boone
26 / 17 / 8
Регистрация: 11.02.2018
Сообщений: 164
Завершенные тесты: 3
23.07.2018, 10:16  [ТС] 4
Cyborg Drone, благодарю!
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.07.2018, 10:16

Оптимизация перехода массива
Нужно написать программу, которая оптимизированно осуществит переход от шестимерного массива к...

Последовательность Фиббоначи. Оптимизация программы
Я написал программу, благодаря которой можно вычислить, почти, все числа фиббоначи. program Fib; ...

Оптимизация, алгоритм не проходит по времени
Последовательность a1, a2, a3, … , an-1, an называется пилообразной, если она удовлетворяет одному...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru