我在CodeChef(https://www.codechef.com/problems/SUBINC)上遇到了一个关于计数严格不减少的子数组的问题。尽管多次阅读说明,但我无法破译我的预期。
我主要遇到两个陈述的问题:
1)*" 所有有效的子阵列都是A [1,1],A [1,2],A [2,2],A [3,3],A [3,4] ],A [4,4]。" *
如果子阵列是1 4 2 3,那么A [2,2]; A [3,3]; A [3,4]和A [4,4]如何有效?(鉴于它是只有当前向元素按递减顺序时才会递减)同样为什么A [1,1]有效?
2)"只有单个子阵列A [1,1]不减少。"
这里有类似的问题。如果数组本身只有1,那你怎么算A [1,1]是 sub -array?
也许我完全没有意识到要做什么,因为许多人已经解决了这个问题,但是真的很感激一些帮助。
P.S我用Java编写代码并且在C中不太舒服,这就是为什么我无法理解大多数提交的内容。
答案 0 :(得分:2)
好的,你有一个包含四个数字的数组
1 4 2 3
符号A[i, j]
说:“将数组的所有元素从索引i
获取到索引j
”。
A[1,2]
代表一个子阵列:1 4
A[1,3]
代表一个子阵列:1 4 2
A[1,4]
将是整个数组:1 4 2 3
阵列的任何一个元素也是一个子阵列,
所以当我们说A[1,1]
时,这意味着我们需要将从索引1
开始的元素带到索引1
,因此它只是一个数字:1
(A[2,2]
因此4
等等。)
Non-decreasing
表示数组的下一个元素不得小于前一个元素。因此,单元素数组总是不减少,其中的下一个元素不存在(所以它不能少)。