段错误 可能是越界了 求各位i康康
#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
两组测试数据没问题
但是提交显示段错误