seo 网站地图,库存网站建设定制,中国最近新闻大事件,网站设计制作体会大家好#xff0c;我是晴天学长#xff0c;一个简单的dfs思想#xff0c;需要的小伙伴可以关注支持一下哦#xff01;后续会继续更新的。 1) .数树数 2) .算法思路
代码的主要逻辑是#xff1a;
1.使用Scanner读取输入的整数n和q#xff0c;其中n表示测试用例的数量我是晴天学长一个简单的dfs思想需要的小伙伴可以关注支持一下哦后续会继续更新的。 1) .数树数 2) .算法思路
代码的主要逻辑是
1.使用Scanner读取输入的整数n和q其中n表示测试用例的数量q表示每个测试用例的步数。 2.使用循环遍历每个测试用例 3.读取一个字符串s该字符串由字符’L’和’R’组成表示树的结构。 4.初始化ans为0用于记录树的数目。 5.调用dfs方法进行深度优先搜索传入参数s、初始的ans和步数1。 6.输出搜索结果并进行下一个测试用例的处理。 7.dfs方法是递归的深度优先搜索函数它根据输入的字符串s和当前的ans和步数来计算树的数目。
具体逻辑如下
1.如果当前步数对应的字符是’L’则树的数目按照公式(ans-1)*21计算。 2.如果当前步数对应的字符是’R’则树的数目按照公式(ans-1)*22计算。 3.如果当前步数是字符串s的最后一个字符的位置则返回计算得到的树的数目。 4.增加步数step的值并递归调用dfs方法传入更新后的ans和步数。 5.返回递归调用的结果。 3.代码示例
package LanQiaoTest.枚举;import java.util.Scanner;public class 数树数 {static int ans 0;public static void main(String[] args) {Scanner scanner new Scanner(System.in);int n scanner.nextInt();int q scanner.nextInt();for (int i 0; i q; i) {String s scanner.next();ans 0;System.out.println(dfs(s, 1, 0));}}public static int dfs(String s, int ans, int step) {if (s.charAt(step) L) {if (ans 1) {ans Math.max(1, ans-1);}else {ans(ans-1)*21;}} else {ans (ans-1)*22;}if (steps.length()-1){return ans;}step;ansdfs(s,ans,step);return ans;}
} 5.总结
dfs的正确步骤。变量的正确赋值。