由一道acm题目所想到

11 篇文章 0 订阅

已经很长一段时间没有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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值