求助,关于c语言开一维数组能开多大
  • 板块学术版
  • 楼主HEU_ZWZ
  • 当前回复3
  • 已保存回复3
  • 发布时间2024/5/13 19:55
  • 上次更新2024/5/13 21:55:52
查看原帖
求助,关于c语言开一维数组能开多大
213454
HEU_ZWZ楼主2024/5/13 19:55

https://www.luogu.com.cn/problem/P2926

我写的此题ac代码:

#include<stdio.h>
int main()
{
	int n,re[1000005]={0};\\主要问题出在这里,如果开到当前1000005 devc++不能正常运行,但题目能过,报错是超出有效地址。
	scanf("%d",&n);
	int base[n],max=0;
	for(int i=0;i<n;i++)
	{
		scanf("%d",&base[i]);
		re[base[i]]++;
		if(base[i]>max)
		max=base[i];
	}
	int value[max+1]={0};
	for(int i=1;i<=max;i++)
	{
		if(re[i]==0)
		continue;
		int size=max/i;
		for(int j=0;j<size;j++)
		{
			value[i*(j+1)]+=re[i];
		}
	}
	for(int i=0;i<n;i++)
	{
		printf("%d\n",value[base[i]]-1);
	}
}

但如果将数组大小改为100005本地能运行,但数组尺寸太小线上几个点会RE,所以希望有大佬能帮忙解释下这个一维数组开的大小是根据什么来决定的。

2024/5/13 19:55
加载中...