Bize tüm ile dizisi verilir .a [ i ] > 0
Şimdi alt dizilerinden kaç ayrı toplam oluşturulabileceğini bulmamız gerekiyor (bir alt dizinin dizinin bitişik bir aralığı olduğu, yani bazı için , toplamın tümü alt dizinin elemanları). Örneğin, , cevap 4'tür: oluşturabiliriz .j , k a = [ 1 , 2 , 1 ] 1 , 2 , 3 , 4
zamanında ayrı meblağların sayımını biliyorum .
Dahası, bunun bir dizenin farklı alt dizelerinin sayısını bulmamız gereken klasik soruna benzer olduğunu fark ettim. Bir ek dizisi oluşturma ve benzer bir şekilde ( zamanında) çözme olasılığını düşünüyordum . Ama burada çalışmak için nasıl değiştirileceğini bulamadım. Örneğin, için sonek dizisi kullanırsak, kabul edilebilir dört yerine 5 örnek alırız. Bunu sonek dizileri kullanarak yapmak mümkün mü yoksa yanlış yönde mi düşünüyordum?a = [ 1 , 2 , 1 ]
Ayrıca düşündüğüm bir yön daha var. Böl ve fethet. Sanki diziyi tek bir öğeye indirilinceye kadar her seferinde iki parçaya bölersem. Tek bir öğenin bir toplamı olabilir. Şimdi iki tek öğeyi birleştirirsek, iki şekilde yapılabilir: her iki tek aralık da aynı öğeye sahipse, 2 farklı toplam alırız veya her ikisinin farklı öğeleri varsa 3 farklı toplam alırız. Ancak 1'den büyük uzunluktaki dizileri birleştirmek için bunu genelleştiremiyorum. İki m boyutlu dizileri birleştirmek ve cinsinden cevabı almak mümkün müdür ?