我一直认为算法的基本操作是位于最内层循环内的操作。我在书籍和在线文章中发现的细节很少,可能是因为它应该是微不足道的,但少数愿意解释算法中的基本操作应该是什么,他们总是说它是执行的操作most,即位于最内循环内的那个。
因此,在这个算法中:
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();
第一个for里面的赋值操作,因为它运行了N次,而第二个for运行了N-1次。
我的老师说这是不正确的,这个算法中的基本操作是秒内的操作。
无论如何,有一些例外情况,即基本操作不是位于最内循环内的操作,或者她错了?