北航的同学扔过来的题目。
你航还真是凶残,同学没语言基础,下半年开学才开始接触C语言,现在就做这种题。

能写出直接模拟的办法,时间复杂度O(n^2),空间复杂度(O^2),实在是谈不上优秀。
按照题目的hint可以写出另一种,每个人的秘密最终都会到达n,但是每个人传递的节点是唯一的,只要把每个人传递到n的节点数数出来求最大就vans了。

我还以为是个难题,结果是个水题。

使用自然下标操作,即从1开始计数。

#include <stdio.h>
#define MAX 1000
int n;
int order[MAX+1];//穿话对象
int board[MAX+1][MAX+1]={0};//标志位,a知道了b的真心话就是board[a][b]=1,C++下可以用bool数组代替int check();//检查第n个人是不是都知道了
void merge(int from,int to);//把from知道的所有真心话传给toint main(int argc, char const *argv[])
{int i;int cnt=0;scanf("%d",&n);for(i=1;i<=n;++i) scanf("%d",&order[i]);for(i=1;i<=n;++i) board[i][i]=1;//每个人都知道自己的秘密while(!check()){for(i=1;i<=n;++i)merge(i,order[i]);++cnt;}printf("%d\n",cnt );
}int check()
{int i;for(i=1;i<=n;++i)if(board[n][i]==0) return 0;return 1;
}void merge(int from,int to)
{int i;for(i=1;i<=n;++i)if(board[from][i])//如果from知道了i的秘密,也要让to知道i的秘密board[to][i]=1;
}

数节点数:

#include <stdio.h>
#define MAX 1000
int n;
int order[MAX+1];
int step[MAX+1]={0};int main(int argc, char const *argv[])
{int i,p,cnt;scanf("%d",&n);for(i=1;i<=n;++i) scanf("%d",&order[i]);for(i=1;i<=n;++i)//数出每个秘密到达n的跳转次数,存在step里{ cnt=0;p=i;while(p!=n){p=order[p];++cnt;}step[i]=cnt;}int max=step[1];for(i=2;i<=n;++i) if(step[i]>max) max=step[i];printf("%d\n",max );return 0;
}

C 真心话大冒险
时间限制: 1000ms 内存限制: 65536kb
通过率:83/132(62.88%) 正确率:83/353 (23.51%)

题目描述
Leslie非常喜欢真心话大冒险的游戏。这一次游戏的规则有些不同。每个人都有自己的真心话,一开始每个人也都只知道自己的真心话。每一轮每个人都告诉指定的第一个人他所知道的所有真心话。
那么Leslie想知道,多少轮后他能知道所有人的真心话呢?题目保证数据有解。

输入
第一行一个数n。表示一共有n个人,编号为1~n, Leslie为第n个人。n<=1000
第二行有n个数,第i个数表示第i个人要传递真心话的对象。

输出
输出一个数x, 表示第x轮司Leslie知道了所有的真心话。
输入样例

4
2 4 2 1

输出样例

2

Hint
可以考虑模拟每个人真心话传递的过程,所有人中需要传递次数的最大值就是答案啦~

buaacoding C.真心话大冒险相关推荐

  1. 菜鸡学C语言之真心话大冒险

    题目描述 Leslie非常喜欢真心话大冒险的游戏.这一次游戏的规则有些不同.每个人都有自己的真心话,一开始每个人也都只知道自己的真心话.每一轮每个人都告诉指定的一个人他所知道的所有真心话,那么Lesl ...

  2. 真心话大冒险C++版本

    Hi~ 又到了给大家分享知识的时候,之前写的博客都是清一色的题解博客,可能许多小伙伴们对次毫无兴趣,今天我们来整点有意思的东西 那就是<<真心话大冒险>>,hhhhhhh,接下 ...

  3. 《用Chrome学编程》真心话大冒险

    Gif高清原图地址: user-images.githubusercontent.com/15868458/63- 真心话大冒险 在线地址: https://zhaoolee.com/Programm ...

  4. 应用“真心话大冒险”项目总结

    项目创作初衷: 当我们决定参与微软winphone 5换1活动开始后,大家就开始各种头脑风暴想一些创意好的小应用,之后我看到了一部电影叫做"真心话大冒险",虽然之前很少玩过这个游戏 ...

  5. 利用wxpython库来制作真心话大冒险小程序

    往期博文中,我已经分享了如何使用tkinter库的制作方法,今天我们可以来看看使用wxpython如何做到 首先我们需要安装第三方库wxpython,安装方法如下 pip install wxpyth ...

  6. 真心话大冒险经典问题

    真心话大冒险经典问题 1:如果看到自己最爱的人熟睡在你面前你会做什么? 先看看是男的还是女的再说. 2:写首自己最最喜爱的歌? 写好后估计就不喜欢了 3:当你最不知道穿什么颜色的时候,你会选择什么颜色 ...

  7. 真心话大冒险,一款小程序让你看清你朋友的内心

    朋友间聚会,难免会玩些活跃气氛的小游戏,而真心话大冒险定然是在聚会时必不可少的一环,但是真正到游戏时却又怯于关系或者各种原因,很多问题不知道应该怎么问,今天要介绍的这款小程序就可以解决你的问题,下面小 ...

  8. 尝鲜用 React Hook + Parcel 构建真心话大冒险简单页面

    首发于我的 Blog 阅读推荐:本人需要您有一定的 React 基础,并且想简单了解一下 Hook 的工作方式和注意点.但是并不详细介绍 React Hook,如果想有进一步的了解,可以查看官方文档. ...

  9. 杀人 真心话大冒险 起底

    6月12日 杀人 真心话大冒险 起底 据称,"杀人游戏"是在1999年由硅谷归国的留学生第一次传到上海的,而后于该年年底在一次IT界的媒体见面会上传到了北京,从此开始了它在全国中大 ...

最新文章

  1. 前端HTML渲染带箭头的线
  2. 进阶学习(3.14) Strategy Pattern 策略模式
  3. vue 圆形百分比进度条_vue实用组件——圆环百分比进度条
  4. Openstack Neutron 管理的网络资源
  5. 取得服务器支持的图形类型
  6. php错误403_phpstudy访问文件报错403/Forbidden解决办法
  7. 松阳天气预报软件测试,松阳天气预报15天
  8. php获取推特feed twitter timeline feed
  9. android 开发对gif解码(适配android 4.2、4.3、4.4版本)
  10. android 4.3 模拟器,模拟器上的Android 4.3
  11. 关于nginx file not found
  12. 中国联通企业介绍(联通笔试背景知识)
  13. 前端React实现pdf在线阅读和电子合同
  14. 天网防火墙V2.61学习教程
  15. 小米笔记本 镜像_小米笔记本Air 13.3原装WIN10出厂系统ISO镜像1607原版怎么下载
  16. i58300h和i7 8750h哪个好 i58300h和i7 8750h对比差距大吗
  17. ALM / QC 64-bit Patch 12 S-Chinese
  18. outlook 发送邮件
  19. redis之db(数据库)
  20. 看理想:3万辆交付意味着什么?

热门文章

  1. Python基础知识-pycharm版-09
  2. 计算机是中北大学双一流建设学科不,中北大学创建“双一流”大学迎来新消息,网友:山西大学仍需努力...
  3. Linux虚拟机配置NAT模式上网时,ping不通百度等网站但能ping通局域网ip解决办法
  4. 微幅波的解析解求解及弥散方程的推导
  5. 计算机使用方法的书,是否知道飞鸽传书软件的详细使用方法?查看介绍
  6. MLCC陶瓷电容详解
  7. HTML5文件夹隐藏了怎么打开,如何打开隐藏文件夹,详细教您打开隐藏文件夹的方法...
  8. AR珠宝试戴经典案例盘点
  9. c语言3 17,C语言修仙
  10. 如何下载在线玩的游戏_在线下载游戏和玩游戏的最佳网站