菜鸡学C语言之真心话大冒险
题目描述
Leslie非常喜欢真心话大冒险的游戏。这一次游戏的规则有些不同。每个人都有自己的真心话,一开始每个人也都只知道自己的真心话。每一轮每个人都告诉指定的一个人他所知道的所有真心话,那么Leslie想知道,多少轮后他能知道所有人的真心话呢?题目保证数据有解。
输入
第一行一个数n,表示一共有n个人,编号为1~n, Leslie为第n个人。n<=1000
第二行有n个数,第i个数表示第i个人要传递真心话的对象。
输出
输出一个数x,表示第x轮后Leslie知道了所有的真心话。
输入样例
4
2 4 2 1
输出样例
2
题目链接:https://buaacoding.cn/problem/1971/index
写在前面:
相信有C语言基础的同学都不难理解递归。举个简单的例子:从前有座山,山里有座庙,庙里有个和尚,和尚在讲故事,从前有座山,山里有座庙,庙里有个和尚,和尚在讲故事,从前有座山...
递归是我们经常用到的算法,当熟悉递归的做法以及题目的思路时,递归经常可以简化代码量。当然,递归也有他的弊端,那就是递归是一个不断深入的过程,在这过程中它每次都需要开辟一块栈空间来存储,使得递归的运行效率通常较低。当然,理论上,每个递归算法都可以转化为非递归(循环)来实现。
题目分析:在每一轮当中,每个人告诉他要告诉的人他知道的真心话(好拗口)。
注意:在这一轮结束后,大家同时知道新的真心话。因为我在看有的代码时发现有同学用循环实现时通常会为大家知道真心话添加顺序,即在同一轮中,如果一个人知道新的真心话后,他接下来也会把这个真心话告诉他要告诉的人,但这其实是不对的。
思路:所有人中需要传递次数的最大值就是答案!
递归,看程序即可。
#include<stdio.h>
#define MAX 1005
#define max(a,b) (a>b?a:b)
int n, pass[MAX]; // pass数组用来存储他要告诉真心话的人
int fun(int x)
{
if(x == n)
return ;
return + fun(pass[x]);
}
int main()
{
int ans = ;
scanf("%d", &n);
for(int i = ; i <= n; i++)
scanf("%d", &pass[i]);
for(int i = ; i < n; i++)
ans = max(ans, fun(i));
printf("%d", ans);
return ;
}
菜鸡学C语言之真心话大冒险的更多相关文章
- 菜鸡学C语言之摸鱼村村长
题目描述 摸鱼村要选村长了! 选村长的规则是村里每个人进行一次投票,票数大于人数一半的成为村长. 然鹅摸鱼村的人都比较懒,你能帮他们写一个程序来找出谁当选村长吗? (每名村民的编号都是一个int范围内 ...
- 菜鸡学C语言之寻根溯源
题目描述 Mogg最近翻了翻自己家的族谱,想康康祖先是谁.但是族谱因为年久失修太乱了,他现在只整理出来了一系列父子关系,你能帮他找一找直系亲属中辈分最大的一位吗?(即父亲的父亲的父亲……) 输入 第1 ...
- android 真心话大冒险 摇色子
android 真心话大冒险 摇色子 软件
- ACM菜鸡退役帖——ACM究竟给了我什么?
这个ACM退役帖,诸多原因(一言难尽...),终于决定在我大三下学期开始的时候写出来.下面说两个重要的原因. 其一是觉得菜鸡的ACM之旅没人会看的,但是新学期开始了,总结一下,只为了更好的出发吧. 其 ...
- HDU 2064 菜鸡第一次写博客
果然集训就是学长学姐天天传授水铜的动态规划和搜索,今天讲DP由于困意加上面瘫学长"听不懂就是你不行"的呵呵传授,全程梦游.最后面对连入门都算不上的几道动态规划,我的内心一片宁静,甚 ...
- 菜鸡谈OO 第二单元总结
“欢迎来到(玄学)多线程的新世界” Homework1 单部傻瓜电梯调度 Part1 多线程设计策略 第一次学到了线程这个概念,与之前的编程体验大有不同.最大的区别在于从原本的线性发生程序变成了多个行 ...
- 一个数学不好的菜鸡的快速沃尔什变换(FWT)学习笔记
一个数学不好的菜鸡的快速沃尔什变换(FWT)学习笔记 曾经某个下午我以为我会了FWT,结果现在一丁点也想不起来了--看来"学"完新东西不经常做题不写博客,就白学了 = = 我没啥智 ...
- 小C的故事(快速学C语言,,,极速版!)
前几天这篇博客写了太多废话! 删啦~~. 本篇博客只是为chd A协的全嫩小鲜肉入门C语言的预科, 如果你在此处学习C语言, 不幸走火入魔, 小弱概不负责. //请直接随便找个C语言编译器,抄一下下面 ...
- 快看Sample代码,速学Swift语言(1)-语法速览
Swift是苹果推出的一个比较新的语言,它除了借鉴语言如C#.Java等内容外,好像还采用了很多JavaScript脚本里面的一些脚本语法,用起来感觉非常棒,作为一个使用C#多年的技术控,对这种比较超 ...
随机推荐
- PHP菜鸟如何开始学习PHP语言
把我自己学习PHP的经验分享出来,既给想学习PHP的朋友提供一个思路,也算是整理一下自己的思路,好给后续的教程开个头吧~ 学习其实也是有方法的,举个例子:在您上学期间,班里一定有学霸,也有学渣,也有普 ...
- Spring Boot:简介
一.概述 Spring Boot 是Java一个开源框架,主要用途是用来创建微服务:可以用来创建独立的.生产的基于Spring的应用程序. Spring Boot 采用默认配置观点,多数Spring ...
- [PHP] 解决人人商城收银台不能上传图片问题
反正网上一大堆,也不知道哪个版本有修复,反正我的没有修复. 问题报错:ReferenceError: angular is not defined 解决如下: 修改文件:addons/ewei_sho ...
- redis php操作命令
redis的五种存储类型的具体用法 String 类型操作 string是redis最基本的类型,而且string类型是二进制安全的.意思是redis的string可以包含任何数据.比如jpg图片或者 ...
- http协议中的响应代码从 1xx ~ 5xx,一共有41种
http协议中的响应代码从 1xx ~ 5xx,一共有41种 http://how2j.cn/k/http/http-response-code/572.html
- shell脚本的一些常用操作
字符串长度: ${#string}可获取string字符串的长度,如下: jenkins@soft1pc:~$ str="who are you"jenkins@soft1pc:~ ...
- Ubuntu下载
由于官网服务器在国外,下载速度奇慢,所以我们可以利用阿里云镜像下载ubuntuubuntu 14.04:http://mirrors.aliyun.com/ubuntu-releases/14.04/ ...
- linux创建桌面快捷方式
这里拿postman举例,其他的程序类似 在/usr/sharp/applications新建postman.desktop文件(终端下输入vim /usr/sharm/applications/po ...
- CodeForces - 468A
Little X used to play a card game called "24 Game", but recently he has found it too easy. ...
- ios开发蓝图