C语言 吃糖果
答案:2 悬赏:20 手机版
解决时间 2021-11-22 14:55
- 提问者网友:难遇难求
- 2021-11-22 07:05
C语言 吃糖果
最佳答案
- 五星知识达人网友:逐風
- 2021-11-22 08:00
是,你程序的问题就是 int num[maxn];这句话,这句话会造成堆栈溢出,它分配不了这么大的空间。
解决方法:
我觉得这个题目的考点就在这个大空间的上面。我还没有编,不过我觉得你可以考虑不存储这个大的数组,只处理当前输入的数字。
你可以观察一下给的两组数据,第一组4 1 1 , 4比剩下的数的和要大两个,所以如果把4当成一个,其他全部当成一个,那一边拿一个会导致4这边,最少剩一个,也就是先拿会剩一个。
所以,我觉得可以下这个结论,这对数中最大的数,比除他以外的其他数的和大2,那就是no。其他的我觉得都是yes。
所以,可以这么编。
输入n
for i = 1 ~ n
{
max;
sum;
输入kind
for j = 1~ kind
{
输入当前的数input
max 用来找到这堆数中最大的数
sum 用来记录总和。不过要注意sum也可能超,如果可以申明__int64类型就很简单了
}
if( (max - (sum-max)) >=2 ) 输出 no
else 输出 yes
}
解决方法:
我觉得这个题目的考点就在这个大空间的上面。我还没有编,不过我觉得你可以考虑不存储这个大的数组,只处理当前输入的数字。
你可以观察一下给的两组数据,第一组4 1 1 , 4比剩下的数的和要大两个,所以如果把4当成一个,其他全部当成一个,那一边拿一个会导致4这边,最少剩一个,也就是先拿会剩一个。
所以,我觉得可以下这个结论,这对数中最大的数,比除他以外的其他数的和大2,那就是no。其他的我觉得都是yes。
所以,可以这么编。
输入n
for i = 1 ~ n
{
max;
sum;
输入kind
for j = 1~ kind
{
输入当前的数input
max 用来找到这堆数中最大的数
sum 用来记录总和。不过要注意sum也可能超,如果可以申明__int64类型就很简单了
}
if( (max - (sum-max)) >=2 ) 输出 no
else 输出 yes
}
全部回答
- 1楼网友:雪起风沙痕
- 2021-11-22 08:35
我测试了几次,把你的#define maxn 定义的值改小了一点,我改成了100,程序可以正常运行了...估计1000000太大了吧,建议数组长度不要太大,语法上是没什么错,但是程序很可能就崩溃了,像你这个一样..你试试吧,把1000000改小一点!追问可是题目有要求啊。。。追答那就再看下你的算法在逻辑上有错没,顺便检查一下数组有没有越界!
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯