e×2の数を2つで分けたい時の組合せを下のプログラムで表した、最終はm_0の前後で表している。
分ける際数字は小さいもの順に並べます。
e=100の時、200を2つに分ける時の組合せが多すぎて、時間が掛かってしまいます。その対処方法がわかる方いらっしゃいますか??
ruby
1e = gets.to_i 2m = (e*2).times.map{|i| i+1 }.combination(e).to_a 3 4m_0 = (m.count/2).times.map{|i| 5 m[i]+m[m.count-i-1] 6} 7puts m_0 8 9
このままのコードではm_0の中身は「配列」となりますが、得たいものはそれで間違いないでしょうか?
返事ありがとうございます。
はい、配列で間違いないです。
e=2の時
e = gets.to_i
m = (e*2).times.map{|i| i+1 }.combination(e).to_a
a = (m.count/2).times.map{|i|
m[i]
}
b = (m.count/2).times.map{|i|
m[m.count-i-1]
}
puts a => [[1, 2], [1, 3], [1, 4]]
puts b => [[3, 4], [2, 4], [2, 3]]
本当はこのようにa,bと分けたいのですが数が多くなると処理時間が増えるので。
回答3件
あなたの回答
tips
プレビュー