晚上在牛客网练习编程,做了一题网易的,很简单的题但是会提示“程序发生段错误,可能是数组越界,堆栈溢出(比如,递归调用层数太多)”,想来想去也不懂为什么,本地可以测试通过,然后既没有数组越界也没有调用递归。。。后面找到了原因,有可能是数组界定太大了,在给数组赋值的时候系统发生错误。
_________________________________________
题目如下:
时间限制:1秒
空间限制:32768K
题目描述
小易有一个长度为N的正整数序列A={A[1], A[2], A[3], …, A[n]}。
牛博士给小易出了一个难题:
对数列A进行重新排列,使数列A满足所有的A[i]*A[i+1](1<=i<=N-1)都是4的倍数。
小易现在需要判断一个数列是否可以重排之后满足牛博士的要求。
输入描述:
输入的第一行为数列的个数t(1<=t<=10)
接下来每两行描述一个数列A,第一行为数列长度n(1<=n<=10^5)
第二行为n个正整数Ai(1<=Ai<=10^9)
输出描述:
对于每个数列输出一行表示是否可以满足牛博士要求,如果可以输出Yes,否则输出No
示例1
输入
2
3
1 10 100
4
1 2 3 4
输出
Yes
No
_______________________________________________________________
原来的解决代码:(个人猜想注释部分是出错原因)
#include<iostream>
using namespace std;
int main(){
int n,line,a[10000]; //这里定义
cin>>line;
for(int j = 0 ; j < line ;

本文记录了在牛客网上解决一道编程题时遇到的“段错误”问题及解决过程。通过对代码逐步调试,发现使用数组接收输入并非必要,并通过调整代码成功解决了问题。
5844

被折叠的 条评论
为什么被折叠?



