将掉头等价于穿过
问题转为:
记感染蚂蚁为t,t左边的蚂蚁为i,右边的蚂蚁为j
答案即求解与t异向的j,同向的i(前提是j != 0)
加起来即可
import java.util.Scanner;
public class Main {
static final int N = 55;
static int[] a = new int[N];
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
for (int i = 1; i <= n; i++) a[i] = sc.nextInt();
//感染蚂蚁左边向右走的数量,右边向左走的数量
int l_to_r = 0, r_to_l = 0;
int t = Math.abs(a[1]);
for (int i = 2; i <= n; i++) {
if (Math.abs(a[i]) < t && a[i] > 0) l_to_r++;
else if (Math.abs(a[i]) > t && a[i] < 0) r_to_l++;
}
/*最初版
int ans = 1;
if (a[1] > 0) {
ans += r_to_l;
if (r_to_l != 0) {
ans += l_to_r;
}
} else {
ans += l_to_r;
if (l_to_r != 0) {
ans += r_to_l;
}
}
*/
int ans = 1;
if ((a[1] > 0 && r_to_l != 0) || (a[1] < 0 && l_to_r != 0)) {
ans += r_to_l + l_to_r;
}
System.out.println(ans);
}
}
算法1
(暴力枚举) $O(n^2)$
blablabla
时间复杂度
参考文献
C++ 代码
blablabla
算法2
(暴力枚举) $O(n^2)$
blablabla
时间复杂度
参考文献
C++ 代码
blablabla