Как определить, что является элементарной операцией в алгоритме?

96
10

Я всегда думал, что элементарная операция из алгоритма - это операция, расположенная внутри самого внутреннего цикла. Я нашел очень мало информации об этом в книгах и онлайн-статьях, может быть, потому, что он должен был быть чем-то тривиальным, но немногие, кому было интересно объяснить, что должно быть элементарной операцией в алгоритме, всегда говорят, что его выполняемая операция наиболее, т.е. тот, который находится внутри самой внутренней циклы.

И как таковой, в этом алгоритме:

public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);

while (true) {
int N = in.nextInt();
if (N == 0)
break;

long cost = 0;
int[] houses = new int[N];
for (int i = 0; i < N; ++i)
houses[i] = in.nextInt();

for (int i = 0; i < N - 1; ++i) {
cost += Math.abs(houses[i]);
houses[i + 1] += houses[i];
}
System.out.println(cost);
}
}
}

Я сказал, что элементарной операцией были операции операции назначения houses[i] = in.nextInt(); внутри первого, потому что он работает N раз, а второй - для N-1 раз.

Мой учитель говорит, что это неверно и что элементарная операция в этом алгоритме - это операция внутри второго.

По каким-либо причинам есть исключения, когда элементарная операция - это не операция, расположенная внутри самой внутренней циклы, или она ошибается?

спросил(а) 2016-02-16T02:57:00+03:00 4 года, 1 месяц назад
1
Решение
74

Для этой программы второй цикл цикла не находится внутри первого цикла for.

Эта программа принимает N чисел в качестве входных данных для массива домов, а фактический алгоритм находится только во втором цикле, где он удерживает текущее количество затрат на первые я элементов массива в i-м индексе.

Ваш учитель верен.

ответил(а) 2016-02-18T23:03:00+03:00 4 года, 1 месяц назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема