已经很长一段时间没有ac题了,一周之前报名参加了计算客的编程大赛,虽然我的结果不
是特别理想,但是还是学到了一些东西。下边,我先贴出题目和对应的程序源码:
代码如下:(c语言)
#include<stdio.h>
int main()
{
int n = 0;
int i = 0;
int totalTime = 0;
scanf("%d",&n);
int p[n];
if (n >= 1 && n <= 10000)
{
for (i = 0;i < n;i++)
{
scanf("%d",&p[i]);
}
if (n % 2 == 1)
{
for (i = 0;i < n; i+=2)
{
totalTime += p[i];
}
}
else
{
for (i = 0;i < n-2; i += 2)
{
totalTime += p[i];
}
if (p[n - 1]>p[n - 2])
{
totalTime += p[n-1];
}
else
totalTime += p[n-2];
}
printf("%d",totalTime);
}
return 0;
}
代码分析:细心的你,有可能会发现代码中出现了这样的代码:
int n = 0;
scanf("%d",&n);
int p[n];
这样的代码是通过的吗?是对的,因为acm用的编译器是gcc,这还不是重点,gcc中支
持这样定义数组,还记得在《指针,数组》这篇博客中,我写到初学者一般会写出类似
上边那句的代码,当时还说是不对的。现在,我纠正,它是在windows下的vs中是不支
持的,但是gcc下允许这样。
acm考验的是细心程度,也是希望我们写出规范的代码,更有助于提高我们的算法。希
望以后多加练习。
如果以上的内容 ,有问题,可以联系我哦~~邮箱:1521107105@qq.com