题目

小朋友 A 在和 ta 的小伙伴们玩传信息游戏,游戏规则如下:

有 n 名玩家,所有玩家编号分别为 0 ~ n-1,其中小朋友 A 的编号为 0

每个玩家都有固定的若干个可传信息的其他玩家(也可能没有)。传信息的关系是单向的(比如 A 可以向 B 传信息,但 B 不能向 A 传信息)。

每轮信息必须需要传递给另一个人,且信息可重复经过同一个人

给定总玩家数 n,以及按 [玩家编号,对应可传递玩家编号] 关系组成的二维数组 relation。返回信息从小 A (编号 0 ) 经过 k 轮传递到编号为 n-1 的小伙伴处的方案数;若不能到达,返回 0。

示例 1:

输入:n = 5, relation = [[0,2],[2,1],[3,4],[2,3],[1,4],[2,0],[0,4]], k = 3

输出:3

解释:信息从小 A 编号 0 处开始,经 3 轮传递,到达编号 4。共有 3 种方案,分别是 0->2->0->4, 0->2->1->4, 0->2->3->4。

示例 2:

输入:n = 3, relation = [[0,2],[2,1]], k = 2

输出:0

解释:信息不能从小 A 处经过 2 轮传递到编号 2

限制:

2 <= n <= 10

1 <= k <= 5

1 <= relation.length <= 90, 且 relation[i].length == 2

0 <= relation[i][0],relation[i][1] < n 且 relation[i][0] != relation[i][1]

计数dp

dp[i][j]表示经过i轮传递到j的方案数。dp数组元素默认值为0,dp[0][0]=1。

如果没有遍历到dp[i][j]则dp[i][j]默认值为0,即经i轮传递到j的方案数为0。

    public int numWays(int n, int[][] relation, int k) {
int[][] dp=new int[k+1][n];
dp[0][0]=1;
for(int i=1;i<=k;++i){
for(int[] r:relation){
dp[i][r[1]]+=dp[i-1][r[0]];
}
}
return dp[k][n-1];
}

DFS

    private int helper(int pos,int k,int[][] e){
if(k==0){
return pos==e.length-1?1:0;
}
else{
int res=0;
for(int adj=0;adj<e.length;++adj){
if(e[pos][adj]==1)
res+=helper(adj,k-1,e);
}
return res;
}
}
public int numWays(int n, int[][] relation, int k) {
int[][] e=new int[n][n];
for(int[] r:relation){
e[r[0]][r[1]]=1;
}
return helper(0,k,e);
}

来源:力扣(LeetCode)

链接:https://leetcode-cn.com/problems/chuan-di-xin-xi

著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

最新文章

  1. Python中使用递归输出嵌套列表并转化为大写
  2. timus 1180. Stone Game 解题报告
  3. iOS测试常见崩溃
  4. [转]一个四叉树Demo学习
  5. Python标准库---子进程 (subprocess包)
  6. protected 和default的区别
  7. linux库之pam
  8. 驱动笔记 - Makefile
  9. 解决JVM最大内存设置问题
  10. 深入理解7816(1)---- 关于F/D和etu
  11. 分享一下我的部分毕设内容:基于Windows Phone平台的污染源管理应用
  12. hdu 3074 Multiply game(模板级线段树)
  13. Android线程之基本用法
  14. ASP.NET Core MVC Tag Helpers 介绍
  15. laravel框架一种方便的快速填充数据的方法
  16. Spring MVC扩展
  17. Matlab中小语法点总结(更新中)
  18. JS获取url传参
  19. Jakarta项目
  20. SpringMVC怎么获取前台传来的数组

热门文章

  1. Python - 面向对象编程 - 小实战(2)
  2. python-request 实现企业微信接口自动化-1(DDT)
  3. SpringSecurity-图解
  4. MySQL实战45讲(06--10)-笔记
  5. lua中的随机数
  6. CodeForce-813B The Golden Age(数学+枚举)
  7. 为什么不推荐Python初学者直接看项目源码
  8. 使用metaweblog API实现通用博客发布 之 API测试
  9. 微信小程序开发者工具更新后报很多错误
  10. 博客主题——element v2