#26536: 為什麼不能有2個0


zhengyouli547@gmail.com (hahaha)

學校 : 高雄市立高雄高級中學
編號 : 134898
來源 : [223.139.151.14]
最後登入時間 :
2021-09-19 15:23:51
b266. 矩陣翻轉 -- 2016 APCS 實作題第二題 | From: [42.75.48.167] | 發表日期 : 2021-08-12 16:26

import copy

while True:

    try:

        j,i,M=map(int,input().split());to=[]

        for b in range(j):

            a=list(map(int,input().split()))

            to.append(a)                                        #to為題目一開始的2維陣列

        a=list(map(int,input().split()))

        a.reverse()                                               #執行動作

        for b in a:

            if b==1:

                to.reverse()                                      #當指令為1 翻轉陣列

            else:

                z=[]

                for b in range(i-1,-1,-1):

                    k=[]

                    for v in range(j):

                        k.append(to[v][b])                  #當指令為0 向左轉90 度

                    z.append(k)

                to=copy.deepcopy(z)                                              #本來認為是這裡出錯

        print(to)                                                 #這是要輸出的陣列

    except:

        break

我本來是認為陣列 Z 和 to 是連動的,所以當前面敘述z=[]時to 也會艮著變 [] 但後來換成深度複製 結果還是沒有改善,想知道還有哪裡有問題

 
#26544: Re:為什麼不能有2個0


406490150@gms.tku.edu.tw (我是朱朱)

學校 : 國立交通大學
編號 : 139794
來源 : [140.113.236.122]
最後登入時間 :
2022-09-03 11:13:16
b266. 矩陣翻轉 -- 2016 APCS 實作題第二題 | From: [218.173.239.137] | 發表日期 : 2021-08-12 17:56

import copy

while True:

    try:

        j,i,M=map(int,input().split());to=[]

        for b in range(j):

            a=list(map(int,input().split()))

            to.append(a)                                        #to為題目一開始的2維陣列

        a=list(map(int,input().split()))

        a.reverse()                                               #執行動作

        for b in a:

            if b==1:

                to.reverse()                                      #當指令為1 翻轉陣列

            else:

                z=[]

                for b in range(i-1,-1,-1):

                    k=[]

                    for v in range(j):

                        k.append(to[v][b])                  #當指令為0 向左轉90 度

                    z.append(k)

                to=copy.deepcopy(z)                                              #本來認為是這裡出錯

        print(to)                                                 #這是要輸出的陣列

    except:

        break

我本來是認為陣列 Z 和 to 是連動的,所以當前面敘述z=[]時to 也會艮著變 [] 但後來換成深度複製 結果還是沒有改善,想知道還有哪裡有問題



 

問題應該是出在旋轉矩陣的地方,你的i跟j都是固定的,應該要隨著矩陣旋轉做變化,例如3x2旋轉之後要變成2x3、再旋轉又變成3x2

 
ZeroJudge Forum