解题思路:
注意事项:
参考代码:
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
#define maxn 100000
int N, num;
int maxm = -1;
int b[maxn], vis[maxn];
int find(int x)
{
num++;
vis[x] = 1;
if(b[x] != x){
return find(b[x]);
}
else {
if(x == 0){
return num - 1;
}
else
return num;
}
}
int main()
{
memset(vis, 0, sizeof(vis));
memset(b, 0, sizeof(b));
cin >> N;
int a;
for(int i = 1; i <= N; i++){
cin >> a;
b[i] = a;
}
for(int i = N ; i > 0; i--){
if(vis[i] != 0){
continue;
}
num = 0;
a = find(i);
maxm = max(a,maxm);
}
cout << maxm;
return 0;
}
0.0分
0 人评分
C二级辅导-公约公倍 (C语言代码)浏览:2158 |
C二级辅导-同因查找 (C语言代码)浏览:705 |
C语言程序设计教程(第三版)课后习题7.4 (Java代码)浏览:873 |
C语言训练-求函数值 (C语言代码)浏览:976 |
C语言程序设计教程(第三版)课后习题6.4 (C语言代码)浏览:674 |
C语言程序设计教程(第三版)课后习题10.7 (C语言代码)浏览:568 |
1113题解浏览:823 |
1014题解浏览:524 |
C语言程序设计教程(第三版)课后习题8.3 (C语言代码)浏览:465 |
多组数据新方法浏览:368 |