我正在嘗試一個編碼問題,如果任何連續數組數字的總和等於給定數字,要求我輸出「YES」,如果不是,則輸出「NO」。如何確定任何給定的連續數組元素的和是否等於ruby中給定的數字?
下面是問題: Prateek想在他的生日當天派對他的N個朋友,每個朋友的編號從1到N.他的朋友要求送禮物來參加聚會,而不是給他一個。禮物的成本在價值列表中給出,其中朋友要求有Costi費用的禮物。
但是,Prateek只有X數額的錢花在禮物上,他想邀請他的連續範圍內的朋友,這些朋友的禮物費用總和等於X.
如果他可以邀請他的朋友,誰可以滿足上述條件,那麼打印YES,否則打印NO。
輸入: 第一行包含一個整數T,表示測試用例的數量。在每個測試案例中,下列輸入將會出現: - 下一行包含兩個空格分隔的整數N和X,其中N表示朋友的數量,X表示Prateek可以花在禮物上的金額。 - 接下來的N行包含N個整數,其中第i行包含第i個整數,表示Costi。
輸出 輸出完全T行,每行包含相應測試用例的答案。
限制條件:
1 <= T <= 10
1 <= N , Costi <= 106
1 <= X <= 1012
輸入樣例
1
5 12
1
3
4
5
2
樣本輸出
YES
說明
在樣品輸入,T等於噸因此,相應地,在下一行中,分別給出N和X的值分別是5和12。在接下來的5行中,你有第i個朋友提問。因爲編號從2到4(包含)的朋友的禮物價值是{3,4,5},他們的總和等於12 - 也就是X的給定值。所以答案是YES。
我的解決辦法是在這裏
b = Array.new
a = Array.new
t = gets.to_i
if t >= 0 && t <= 10
t.times do
n, x = gets.chomp.split.map(&:to_i)
n.times do
a << gets.to_i
end
(1..a.length).each do |num|
a.each_cons(num).each do |pair|
if pair.inject(:+) == x
b << "YES"
else
b << "NO"
end
end
end
if b.include?("YES")
puts "YES"
else
puts "NO"
end
end
end
儘管他們已經接受我的答案,它不通過所有的測試案例,所以我不satisfied.Can有人幫我正確的,更高效,更優雅的解決方案?
您的鏈接只是顯示一個登錄頁面。 –
@JörgWMittag哦是的..不好意思..我猜你必須登錄才能看到挑戰。我會發布整個問題 –
這不是一個Ruby問題,它是一個分配問題 - 你不應該在這裏問這樣的問題 –