【发布时间】:2018-03-10 03:07:22
【问题描述】:
我正在尝试解决这个问题: http://codeforces.com/problemset/problem/888/A
我写了以下代码:
#include <stdio.h>
int main(void)
{
int a, i, q, count;
scanf("%d ", &q);
int ar[q];
for (i = 0; i < q; i++)
{
scanf("%d ", &ar[i]);
}
for (i = 0; i < q; i++)
{
if (i != q - 1 && i != 0)
{
if (((ar[i] < ar[i + 1]) && (ar[i] < ar[i - 1])))
{
count++;
}
else if (((ar[i] > ar[i + 1]) && (ar[i] > ar[i - 1])))
{
count++;
}
}
}
printf("%d", count);
return 0;
}
当我使用第一个测试用例运行程序时,它会打印随机数。 当我再次运行它时,它会打印出不同的随机数。
我查找了解决方案: https://github.com/Waqar-107/Codeforces/blob/master/A-set/888A.Local%20Extrema.py
那段代码不正是我写的吗?为什么我的代码打印出奇怪的东西? 提前致谢。
【问题讨论】:
-
这可能是因为你有一个错误。拿一个调试器检查你的程序(或者用笔和纸在心里复习一下算法。)
-
你永远不会初始化
count。 -
未初始化的局部变量会有一个看起来几乎是随机的indeterminate值。根据类型和看似随机的值,使用它甚至可能导致未定义的行为。
-
旧版本的 c 不一定支持使用变量作为长度来初始化数组。尝试确保您的编译器支持并设置为使用现代标准进行编译,或者使用文字设置数组的长度。数据的最大长度通常在 codeforces 上说明,因此您可以使用它。
标签: c