首页 > 其他分享 >HJ77_火车进站_栈_递归_递归可视化

HJ77_火车进站_栈_递归_递归可视化

时间:2023-04-08 12:34:02浏览次数:45  
标签:cursor 火车 递归 进站 HJ77 可视化 stack out

思路:

多维递归模拟进站出站,递归回溯,使用全局变量收集结果,最后输出结果。

语言知识:

1、关于参数传入和可变变量修改

 

2、错误使用return

 

 

3、进出站不同跟踪方法。cursor只是表示等待进站火车下标。

 

 

 

递归可视化:

 

 

 

 

 程序:

 1 import sys
 2 a=sys.stdin.readline()
 3 wait=sys.stdin.readline().strip().split()
 4 cursor=0#等待进站火车号下标
 5 stack,out=[],[]
 6 #t=out.append(wait[cursor])
 7 #t1=stack.pop()
 8 s=[]
 9 def trainO(cursor,stack,out):
10     #print("0",cursor)
11     if wait[-1] in stack:
12         #收集火车出站列表        
13         s.append(out+stack[::-1 ])
14         return
15     if stack==[]:
16         #print("1" )
17         #火车进站
18         trainO(cursor+1,stack+[wait[cursor]],out)
19     else:
20         #print("2")
21         #火车进站
22         trainO(cursor+1,stack+[wait[cursor]],out)
23         #print("3",stack,out)
24         #火车出站
25         trainO(cursor,stack[:-1],out+[stack[-1]])
26 trainO(cursor,stack,out)
27 s=sorted(s)
28 for i in s:
29     print(" ".join(i))

 

标签:cursor,火车,递归,进站,HJ77,可视化,stack,out
From: https://www.cnblogs.com/tanyuanqing/p/17298319.html

相关文章

  • 递归-回溯
    Stack<int>stack=newStack<int>();inttemp=0;HS(92);voidHS(inti){if(i==100)return;stack.Push(i);Console.WriteLine($"回溯前i:{i}");HS(i+1);temp=stack.Pop();Console.WriteLine($"回溯后i:{temp......
  • 颜色分类(数组、双指针)、排列序列(递归、数学)、合并区间(数组、排序)
    颜色分类(数组、双指针)给定一个包含红色、白色和蓝色,一共n__个元素的数组,**原地(https://baike.baidu.com/item/%E5%8E%9F%E5%9C%B0%E7%AE%97%E6%B3%95)**对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。此题中,我们使用整数0、1和2分别表示红色、......
  • JVM系统优化实践(14):GC可视化工具
    您好,我是湘王,这是我的51CTO博客,欢迎您来,欢迎您再来~工欲善其事,必先利其器。知道了GC工作原理,学会了看GC日志之后,再来了解一下分析GC的工具。它们分别是jstat、jmap、jhat。jstat顾名思义,主要是用于查看JVM的内存和GC情况。先用jps找出Java进程的PID,再用jstat-gc[PID]查看JVM的内存......
  • 汉诺塔递归
    法国数学家爱德华·卢卡斯曾编写过一个印度的古老传说:在世界中心贝拿勒斯(在印度北部)的圣庙里,一块黄铜板上插着三根宝石针。印度教的主神梵天在创造世界的时候,在其中一根针上从下到上地穿好了由大到小的n片金片。不论白天黑夜,总有一个僧侣在按照下面的法则移动这些金片:一次只......
  • 递归汉诺塔
    题目描述法国数学家爱德华·卢卡斯曾编写过一个印度的古老传说:在世界中心贝拿勒斯(在印度北部)的圣庙里,一块黄铜板上插着三根宝石针。印度教的主神梵天在创造世界的时候,在其中一根针上从下到上地穿好了由大到小的n片金片。不论白天黑夜,总有一个僧侣在按照下面的法则移动这......
  • OS-Linux-Tool-可视化比较与合并工具Meld
    OS-Linux-Tool-可视化比较与合并工具Meld在Linux系统上有时会需要进行文件比较与合并,Meld能提供相关功能。http://meldmerge.org/http://meldmerge.org/help/MeldVisualdiffandmergetoolMeldhelpsyoucomparefiles,directories,andversioncontrolledprojects.......
  • 两两交换节点位置:递归法、迭代法和数组转换法
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metahttp-equiv="X-UA-Compatible"content="IE=edge"><metaname="viewport"content="width=......
  • 可视化组件g2之分组箱型图、柱形图、散点图简单使用
    <!--引入G2文件--><scriptsrc="./plugins/g2.v5.min.js"></script><style> .container{  display:flex; } .div{  height:500px; }</style><!--创建图表容器--><divclass="container"> ......
  • 函数的递归
    递归:程序调用自身的编程技巧叫递归。最简单的递归:#include<stdio.h>intmain(){ printf("haha\n"); main(); return0;}注意:会栈溢出。栈区:储存局部变量、函数形参。堆区:储存动态开辟的内存,比如:malloc、calloc。静态区:储存全局变量、static修饰的变量。两个必要条件:1,存在限......
  • 递归与回溯_正则问题()|x
    acwing1225正则问题(递归回溯)考虑一种简单的正则表达式:只由x()|组成的正则表达式。小明想求出这个正则表达式能接受的最长字符串的长度。例如((xx|xxx)x|(x|xx))xx能接受的最长字符串是:xxxxxx,长度是6。思路:遇到'(''|'就进行递归,遇到')'就进行回溯,每次递归dfs(......