競技プログラミングの問題を解いています。
######【問題】
######n本の棒がある。棒 i の長さは Ai である。それらの棒から3本を選んで、できるだけ周長の長い三角形を作ろうと考えている。最大の周長を求めよ。ただし、三角形が作れない際には0を答えとしなさい。
*制約
・3≦n≦100
・1≦Ai≦10^6
例:
入力
n=5
A={2, 3, 4, 5, 10}
出力
12(3, 4, 5の棒を選んだとき)
この問題を Kotlin を用いて解いており、以下のコードまで完成いたしました。
Kotlin
1fun main(){ 2 val n = readLine()!!.toInt() 3 val sides = readLine()!!.split(" ").map(String::toInt) 4 val ans = 0 5 6 (0..n).forEach { k -> 7 (0..(n - 1)).forEach { j -> 8 (0..(n - 2)).forEach { i -> 9 val circumference = i + j + k 10 val twoSides = j + k 11 when { 12 twoSides > i -> { 13 println(circumference) 14 return 15 } 16 } 17 } 18 } 19 println(ans) 20 } 21}
ここまで書いたところ、この i, j, k が sides がつながっていないことに気づいたのですが、つなげ方がわかりません。
map や range を使用すればいいのでしょうか?また、このコードで本当に問題の条件をクリアしているのでしょうか?
i, j, k を sides から選ぶようにするための方法を教えていただきたく存じます。
追:Android Studio を使用しております。
回答1件
あなたの回答
tips
プレビュー