段错误 集合的计算 数组越界

段错误 可能是越界了 求各位i康康

img

#include <cstdio>
#include <iostream>
#include <algorithm> 

using namespace std;

void Get_Array( int* arr ,int);
void Get_Array( int* arr ,int n)
{
    int count[n] = {0} ,temp;//用于存储各次的Si个数 temp用于比较跳转数的大小 
    for ( int i = 0 ; i <= n ; i++)
    {    
        if(arr[i] == i+1)//如果该数与下标相同则不会跳转直接输出1 
        {
            count[i] = 1;
        }
        else
        {
            temp = arr[i];
            do
            {     
                temp = *(arr + temp-1);
                count[i] = count [i] + 1;
            } while( temp != arr[i] && temp <= n);
        }
    }

    sort(&count[0],&count[n]); 
    printf("%d" , count[n-1]);
}


int main(void)
{
    int N , A[N];
    
    scanf("%d" , &N);
    getchar();
    for(int i = 0 ; i < N ; i++)
    {
        scanf("%d" , &A[i]);
        getchar();
    }
    
    int *pa = A;
    Get_Array(pa, N);

    return 0;
}

5

2 1 3 4 5 输出2
7
6 5 1 4 2 7 3 输出4
两组测试数据没问题
但是提交显示段错误

我的解答思路和尝试过的方法
我想要达到的结果

int N , A[N];
此时N未知。
数组A[N]的大小未知