1.问题
2.总结
(1)字符串不能被修改
如果要修改字符串,只能先转成列表形式
(2)列表转为字符串输出
不能直接转,只能一个一个转,或者借助join函数
(3)以空格为间隔的一组输入
借用 str1.split()
(4)全局变量定义的时间和定义方式
定义在第一个函数一开始,不要在他被修改以后
(5)关键:这个函数的实现思路非常类似于概论课里学到的可解与不可解结点;这个题利用dfs来解真的结结实实秀到我了,原来深度优先搜索是这么用的,递归的思路一如既往难懂,但很有趣,很暴力;以及visit的三种状态真的yyds,我想了好久怎么实现循环,原来是正在处理状态一直不结束被再次碰到;能结束的就非循环
3.代码
def main():
#code here
global visit
global a
global tag
n = int(input())
a = [0] * n
visit = [0] * n
tag = ['N'] * n
str_in=input()
a=[int(n) for n in str_in.split()]
for i in range(n):
if(visit[i]==0):
dfs(i)
print("".join(tag))
pass
def dfs(i):
visit[i] = 1
if(a[i]!=0):
next=int(i+int(a[i]))
if(visit[next]==0):
dfs(next)
tag[i]=tag[next]
elif(visit[next]==1):
tag[i]='Y'
else:
tag[i]=tag[next]
visit[i]=2
if __name__ == '__main__':
main();