用asp做网站系统步骤,如何查一个公司的营业执照,网站被提示危险网站,建个站的网站打不开一、题目描述
上体育课的时候#xff0c;小蛮的老师经常带着同学们一起做游戏。这次#xff0c;老师带着同学们一起做传球游戏。
游戏规则是这样的#xff1a;n 个同学站成一个圆圈#xff0c;其中的一个同学手里拿着一个球#xff0c;当老师吹哨子时开始传球#xff0…一、题目描述
上体育课的时候小蛮的老师经常带着同学们一起做游戏。这次老师带着同学们一起做传球游戏。
游戏规则是这样的n 个同学站成一个圆圈其中的一个同学手里拿着一个球当老师吹哨子时开始传球每个同学可以把球传给自己左右的两个同学中的一个左右任意当老师再次吹哨子时传球停止此时拿着球没传出去的那个同学就是败者要给大家表演一个节目。
聪明的小蛮提出一个有趣的问题有多少种不同的传球方法可以使得从小蛮手里开始传的球传了 m 次以后又回到小蛮手里。两种传球的方法被视作不同的方法当且仅当这两种方法中接到球的同学按接球顺序组成的序列是不同的。比如有 3 个同学 1 号、2 号、3 号并假设小蛮为 1 号球传了 3 次回到小蛮手里的方式有 1-2-3-1 和 1-3-2-1共 2 种。
输入描述
输入一行有两个用空格隔开的整数 nm (3≤n≤301≤m≤30) 。
输出描述
输出一行有一个整数表示符合题意的方法数。
输入输出样例
示例 1
输入
3 3输出 2 二、代码演示 import java.util.*;
// 1:无需package
// 2: 类名必须Main, 不可修改public class Main {public static void main(String[] args) {Scanner scanner new Scanner(System.in);int n scanner.nextInt();int m scanner.nextInt();int[][] dp new int[m 1][n];dp[0][0] 1;for (int i 1; i m ; i) { //第i次传球到j号同学的方案数for (int j 0; j n; j) {dp[i][j] dp[i - 1][(j 1 n) % n] dp[i - 1][(j - 1 n) % n];}}System.out.println(dp[m][0]);}
} 这段代码使用动态规划来解决传球问题计算经过m次传球后球回到初始同学0号的方案数。以下是代码的详细解释 动态规划数组初始化 dp[i][j]表示经过i次传球后球到达j号同学的方案数。 初始状态dp[0][0] 1表示0次传球时球在0号同学手中。 状态转移 对于每次传球i从1到m遍历每个同学j从0到n-1。 当前状态dp[i][j]由上一次传球到j的左右相邻同学的方案数之和得到。 左右相邻同学通过取模运算处理环状结构确保索引在有效范围内。 逻辑 每次传球只能传给 相邻同学环形结构。 因此球到达j号的方案数等于 前一次球在 j号左侧同学手中的方案数(j - 1 n) % n 加上 前一次球在 j号右侧同学手中的方案数(j 1 n) % n。 环形结构的处理 (j 1 n) % n获取j号右侧同学的索引自动处理jn-1时的循环。 (j - 1 n) % n获取j号左侧同学的索引避免j0时出现负数。