#38136: ✅ 1 ~ 4 題實做考點分析 x 解題思路 x 詳細解法


xx0932399@gmail.com (Dada878)

學校 : 振聲中學
編號 : 76956
來源 : [118.165.56.12]
最後登入時間 :
2023-03-28 19:58:01
m371. 2. 卡牌遊戲 -- 2023年10月APCS | From: [36.228.163.22] | 發表日期 : 2023-10-29 16:16

https://dada878.com/blogs/apcs-2023-10-solution

 
#38138: Re: ✅ 1 ~ 4 題實做考點分析 x 解題思路 x 詳細解法


liaoweichen1024@gmail.com (M_SQRT)

學校 : 新北市立新莊高級中學
編號 : 195452
來源 : [49.216.164.49]
最後登入時間 :
2024-10-30 23:30:05
m371. 2. 卡牌遊戲 -- 2023年10月APCS | From: [118.166.140.231] | 發表日期 : 2023-10-29 16:45

 

確實測資有疏失
比如
2 3
2 1 2
3 1 3

你的程式碼就無法算出正確的結果。


但是只要卡牌的比較,是上下左右四個方向都比,那就確實是 for(int i=0; i<n; i++) for(int j=0; j<m; j++) 遍歷一次就好,所有測資都能過。

你把程式碼拿掉一個t是故意的嗎XD

 
#38143: Re: ✅ 1 ~ 4 題實做考點分析 x 解題思路 x 詳細解法


xx0932399@gmail.com (Dada878)

學校 : 振聲中學
編號 : 76956
來源 : [118.165.56.12]
最後登入時間 :
2023-03-28 19:58:01
m371. 2. 卡牌遊戲 -- 2023年10月APCS | From: [36.228.163.22] | 發表日期 : 2023-10-29 21:55

感謝你的回覆 ><

程式碼已加強並更新到該頁面!

話說你說的 t 是指什麼(?

 
#38144: Re: ✅ 1 ~ 4 題實做考點分析 x 解題思路 x 詳細解法


xx0932399@gmail.com (Dada878)

學校 : 振聲中學
編號 : 76956
來源 : [118.165.56.12]
最後登入時間 :
2023-03-28 19:58:01
m371. 2. 卡牌遊戲 -- 2023年10月APCS | From: [36.228.163.22] | 發表日期 : 2023-10-29 21:58

我看到了XD

t 的問題也已經修復完畢!

 
#38621: Re: ✅ 1 ~ 4 題實做考點分析 x 解題思路 x 詳細解法


wayne20060815@gmail.com (瑋.Wagin)

學校 : 國立新竹高級中學
編號 : 111122
來源 : [123.192.88.179]
最後登入時間 :
2023-03-11 17:15:03
m371. 2. 卡牌遊戲 -- 2023年10月APCS | From: [123.192.88.179] | 發表日期 : 2023-12-10 20:49

https://dada878.com/blogs/apcs-2023-10-solution

我幾乎照著你的方法做了但第七個測資就是會出錯

 

 

 

 

 

程式碼:
n,m=map(int,input().split())
chart=[list(map(int,input().split())) for _ in range(n)]
ans=0
mod=True
while mod:
    mod=False
    for i in range(n):
        for j in range(m):
            if chart[i][j]==-1:
                continue
            #向上檢查
            if i>0:
                p=i-1
                while (p>=0 and chart[p][j]==-1):
                    p-=1
                if chart[p][j]==chart[i][j]:
                    ans+=chart[i][j]
                    chart[p][j]=chart[i][j]=-1
                    mod=True
                    continue
            #向左檢查
            if j>0:
                q=j-1
                while (q>=0 and chart[i][q]==-1):
                    q-=1
                if chart[i][q]==chart[i][j]:
                    ans+=chart[i][j]
                    chart[i][q]=chart[i][j]=-1
                    mod=True
                    continue
print(ans)

 
#38622: Re: ✅ 1 ~ 4 題實做考點分析 x 解題思路 x 詳細解法


wayne20060815@gmail.com (瑋.Wagin)

學校 : 國立新竹高級中學
編號 : 111122
來源 : [123.192.88.179]
最後登入時間 :
2023-03-11 17:15:03
m371. 2. 卡牌遊戲 -- 2023年10月APCS | From: [123.192.88.179] | 發表日期 : 2023-12-10 21:06

https://dada878.com/blogs/apcs-2023-10-solution

我幾乎照著你的方法做了但第七個測資就是會出錯

 

 

 

 

 

程式碼:
n,m=map(int,input().split())
chart=[list(map(int,input().split())) for _ in range(n)]
ans=0
mod=True
while mod:
    mod=False
    for i in range(n):
        for j in range(m):
            if chart[i][j]==-1:
                continue
            #向上檢查
            if i>0:
                p=i-1
                while (p>=0 and chart[p][j]==-1):
                    p-=1
                if chart[p][j]==chart[i][j]:
                    ans+=chart[i][j]
                    chart[p][j]=chart[i][j]=-1
                    mod=True
                    continue
            #向左檢查
            if j>0:
                q=j-1
                while (q>=0 and chart[i][q]==-1):
                    q-=1
                if chart[i][q]==chart[i][j]:
                    ans+=chart[i][j]
                    chart[i][q]=chart[i][j]=-1
                    mod=True
                    continue
print(ans)


哦哦我發現了

while (p>=0 and chart[p][j]==-1):

這裡的>=要改成>

還有向左檢查的這一行

這樣就AC了

 
ZeroJudge Forum