こちらの問題に関しての質問です
答えのコードをまずはらせていただきます。
python3で実装しました。
n, m, h, x = map(int, input().split()) lis = [[[int(x) for x in input().split()] for _ in range(n)] for _ in range(h)] ans: int = 0 for i in range(h): for j in range(n): for s in range(m): if lis[i][j][s] == x: ans += 1 print(ans)
質問です。
for の中のhとnとmの順番を入れ替えて答えとして提出すると
ランタイムエラーとなってしまいます。どうしてなのでしょうか?
h * n * mの計算量は変わらず、最後まで実装されるため変数の順番をかえただけで
実行速度がかわってしまうことについて理解できませんでした。
よろしくお願いいたします
よくわかりませんが、「ランタイムエラー」って時間がかかっているからではなく、バグがあるから発生するのではないのでしょうか?
h, n, mを入れかえたもので、手元で動作しますか? 特に、h, n, mの値の違うもの。
> for の中のhとnとmの順番を入れ替えて答えとして提出すると
具体的に何を何に変えましたか?
処理時間の画像を追加いたしました。
m,n,,hのじゅんでプログラムを書きました。
>
h, n, mを入れかえたもので、手元で動作しますか? 特に、h, n, mの値の違うもの。
コメントありがとうございます。これから手元でも実装してみます。
h,n,m を入れかえて、「ランタイムエラーになった」コードも提示いただけると原因がわかると思います。
ランタイムエラーが発生した分の時間が長くなっているだけではないでしょうか。
0.18秒とかは制限時間に引っかかるような長さではないかと。
回答2件
あなたの回答
tips
プレビュー