扶我起来我还能敲几行
2021-04-16 22:06
采纳率: 85.7%
浏览 32
已采纳

为什么我这个代码还没输入数据就结束了?

#include<stdio.h>
#include<math.h>

int main()
{
	int n,sum;
	scanf("%d",&n);
	int deep=log2(n+1);
	int tree[10000][10000];
	int sw[10000];
	for(int i=0;i<deep;i++)
	{
		sum=0;
		for(int j=0;j<pow(i,2);j++)
		{
			scanf("%d",&tree[i][j]);
			sum+=tree[i][j];
		}
		sw[i]=sum;
	}
	int max=sw[0];
	int c;
	for(int i=1;i<deep-1;i++)
	{
		if(sw[i]>=max)
		{
			max=sw[i];
		}
	}
	for(int i=0;i<deep;i++)
	{
		if(sw[i]==max)
		{
			c=i;
			break;
		}
	}
	printf("%d",c);
	return 0;
}

请大佬帮忙解答一下!

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • 沐川 2021-04-16 22:21
    已采纳

    这个:int tree[10000][10000];

    改成:int tree[100][100];

    原因:数组的初始化大小超过了编译器的默认stack大小。

    int tree[10000][10000] 约为400M大小。

    点赞 1 评论
  • 猫叔压力大 2021-04-16 22:43

    栈空间的大小是有限制的,如果需要的内存比较大,可以用malloc或者new申请内存放到堆。

    也可以放在函数外也就是全局变量

    点赞 1 评论

相关推荐 更多相似问题