Arrays 没有为每个测试用例提供正确的输出

Arrays 没有为每个测试用例提供正确的输出,arrays,Arrays,给定一个整数数组,将每个元素按相反顺序打印为一行空格分隔的整数。 输入格式 输出格式 将所有整数按相反顺序打印为一行空格分隔的整数 样本输入 4 1 4 3 2 样本输出 2 3 4 1 这是我的密码 int main() { int n; int a[n]; cin >>n; for (int i=0;i<n;i++) { cin>>a[i]; } for (int i=n-1;i>

给定一个整数数组,将每个元素按相反顺序打印为一行空格分隔的整数。 输入格式

输出格式

将所有整数按相反顺序打印为一行空格分隔的整数

样本输入

4

1 4 3 2
样本输出

2 3 4 1
这是我的密码

int main()

{


int n;


int a[n];

    cin >>n;

    for (int i=0;i<n;i++)
    {
       cin>>a[i]; 
    }

    for (int i=n-1;i>=0;i--)
        cout<<a[i]<<" ";


    return 0;
}
intmain()
{
int n;
int a[n];
cin>>n;
对于(int i=0;i>a[i];
}
对于(int i=n-1;i>=0;i--)

cout不能分配具有可变大小的静态数组,这意味着表达式a[n]不可接受,因为在编译时变量“n”未确定。如果此问题对“n”有限制,例如n<1000,则将表达式替换为
int a[1000]
。如果没有,用
int*a=new int[n]替换它;
。这叫做动态分配,你可以搜索它以了解它有多神奇;)

你的问题是什么?您进行了哪些调试?当n=100且插入了所有元素时,输出会给出分段错误。但是对于较小的n值,例如4或5,输出是预期的。对于这一点,最初,我的代码用于9个测试用例中的3个。在我动态分配内存后,9个测试用例中有7个可以使用。叹气,但是现在有2个测试用例的n为1000,给出了错误的答案。现在,我没有动态分配内存,而是声明了[1000],这将清除所有测试用例。我真的很想知道这两种方法之间有什么不同。你能把这个问题的链接发给我吗?我想我知道了你为什么会得到错误的答案。看,当你动态分配内存时,你需要在使用内存后删除它,以释放内存