解题思路:
注意事项:
参考代码:
#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语言代码)浏览:1607 |
数组输出 (C语言代码)浏览:767 |
C语言训练-字符串正反连接 (C语言代码)浏览:622 |
C语言程序设计教程(第三版)课后习题8.1 (C语言代码)浏览:439 |
兰顿蚂蚁 (C++代码)浏览:1098 |
C语言程序设计教程(第三版)课后习题10.5 (C语言代码)浏览:552 |
2004年秋浙江省计算机等级考试二级C 编程题(2) (C语言代码)浏览:1341 |
DNA (C语言代码)浏览:540 |
2005年春浙江省计算机等级考试二级C 编程题(2) (C语言代码)浏览:577 |
C语言程序设计教程(第三版)课后习题12.1 (C语言代码)浏览:649 |