buaacoding C.真心话大冒险
北航的同学扔过来的题目。
你航还真是凶残,同学没语言基础,下半年开学才开始接触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.真心话大冒险相关推荐
- 菜鸡学C语言之真心话大冒险
题目描述 Leslie非常喜欢真心话大冒险的游戏.这一次游戏的规则有些不同.每个人都有自己的真心话,一开始每个人也都只知道自己的真心话.每一轮每个人都告诉指定的一个人他所知道的所有真心话,那么Lesl ...
- 真心话大冒险C++版本
Hi~ 又到了给大家分享知识的时候,之前写的博客都是清一色的题解博客,可能许多小伙伴们对次毫无兴趣,今天我们来整点有意思的东西 那就是<<真心话大冒险>>,hhhhhhh,接下 ...
- 《用Chrome学编程》真心话大冒险
Gif高清原图地址: user-images.githubusercontent.com/15868458/63- 真心话大冒险 在线地址: https://zhaoolee.com/Programm ...
- 应用“真心话大冒险”项目总结
项目创作初衷: 当我们决定参与微软winphone 5换1活动开始后,大家就开始各种头脑风暴想一些创意好的小应用,之后我看到了一部电影叫做"真心话大冒险",虽然之前很少玩过这个游戏 ...
- 利用wxpython库来制作真心话大冒险小程序
往期博文中,我已经分享了如何使用tkinter库的制作方法,今天我们可以来看看使用wxpython如何做到 首先我们需要安装第三方库wxpython,安装方法如下 pip install wxpyth ...
- 真心话大冒险经典问题
真心话大冒险经典问题 1:如果看到自己最爱的人熟睡在你面前你会做什么? 先看看是男的还是女的再说. 2:写首自己最最喜爱的歌? 写好后估计就不喜欢了 3:当你最不知道穿什么颜色的时候,你会选择什么颜色 ...
- 真心话大冒险,一款小程序让你看清你朋友的内心
朋友间聚会,难免会玩些活跃气氛的小游戏,而真心话大冒险定然是在聚会时必不可少的一环,但是真正到游戏时却又怯于关系或者各种原因,很多问题不知道应该怎么问,今天要介绍的这款小程序就可以解决你的问题,下面小 ...
- 尝鲜用 React Hook + Parcel 构建真心话大冒险简单页面
首发于我的 Blog 阅读推荐:本人需要您有一定的 React 基础,并且想简单了解一下 Hook 的工作方式和注意点.但是并不详细介绍 React Hook,如果想有进一步的了解,可以查看官方文档. ...
- 杀人 真心话大冒险 起底
6月12日 杀人 真心话大冒险 起底 据称,"杀人游戏"是在1999年由硅谷归国的留学生第一次传到上海的,而后于该年年底在一次IT界的媒体见面会上传到了北京,从此开始了它在全国中大 ...
最新文章
- 前端HTML渲染带箭头的线
- 进阶学习(3.14) Strategy Pattern 策略模式
- vue 圆形百分比进度条_vue实用组件——圆环百分比进度条
- Openstack Neutron 管理的网络资源
- 取得服务器支持的图形类型
- php错误403_phpstudy访问文件报错403/Forbidden解决办法
- 松阳天气预报软件测试,松阳天气预报15天
- php获取推特feed twitter timeline feed
- android 开发对gif解码(适配android 4.2、4.3、4.4版本)
- android 4.3 模拟器,模拟器上的Android 4.3
- 关于nginx file not found
- 中国联通企业介绍(联通笔试背景知识)
- 前端React实现pdf在线阅读和电子合同
- 天网防火墙V2.61学习教程
- 小米笔记本 镜像_小米笔记本Air 13.3原装WIN10出厂系统ISO镜像1607原版怎么下载
- i58300h和i7 8750h哪个好 i58300h和i7 8750h对比差距大吗
- ALM / QC 64-bit Patch 12 S-Chinese
- outlook 发送邮件
- redis之db(数据库)
- 看理想:3万辆交付意味着什么?
热门文章
- Python基础知识-pycharm版-09
- 计算机是中北大学双一流建设学科不,中北大学创建“双一流”大学迎来新消息,网友:山西大学仍需努力...
- Linux虚拟机配置NAT模式上网时,ping不通百度等网站但能ping通局域网ip解决办法
- 微幅波的解析解求解及弥散方程的推导
- 计算机使用方法的书,是否知道飞鸽传书软件的详细使用方法?查看介绍
- MLCC陶瓷电容详解
- HTML5文件夹隐藏了怎么打开,如何打开隐藏文件夹,详细教您打开隐藏文件夹的方法...
- AR珠宝试戴经典案例盘点
- c语言3 17,C语言修仙
- 如何下载在线玩的游戏_在线下载游戏和玩游戏的最佳网站