n = int(input()) f = list(map(int,input().split())) visited = [False] * n groups = 0 for i in range(n): if not visited[i]: groups +=1 cur = i while not visited[cur]: visited[cur] = True cur = f[cur] print(groups)
因為題目要求數字有幾個小群體,所以第一步可以去做:
1 .先把所有格子先標記為False,如果已經尋過那就標示為True
2. 再來找規律
for迴圈利用 i 生成自己的號碼 0 1 2 3 4 5 6 7 8 9 #不會改變
如果朋友的號碼 9 8 7 6 5 4 3 2 1 0#input()
第一步:看有沒有標記過,如果沒有則加入一個小群體,並記錄下來目前自己的數字
第二步:重複直到結果有被標記住。若無紀錄則標註True,引所數字到自己位置繼續做比較,直到跑完整個n次
因為題目要求數字有幾個小群體:
.先把所有格子先標記為False,如果已經尋過那就標示為True
. 再來找規律
for迴圈利用 i 生成自己的號碼 0 1 2 3 4 5 6 7 8 9 #不會改變
如果朋友的號碼 9 8 7 6 5 4 3 2 1 0#input()
第一步:看有沒有標記過,如果沒有則加入一個小群體,並記錄下來目前自己的數字
第二步:重複直到結果有被標記住。若無紀錄則標註True,引所數字到自己位置繼續做比較,直到跑完整個n次