我在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]是子数组呢?

也许我完全没有意识到应该做些什么,因为这个问题已经被许多人解决了,但是一定会有所帮助。

P.S我用Java编写代码,而对C则不太熟悉,所以这就是为什么我看不懂大多数提交内容的原因。

最佳答案

好,你有四个数字组成的数组
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表示数组的下一个元素不能小于前一个。因此,一个单元素数组始终是不递减的,它中的下一个元素就不存在(因此它不能少于它)。

10-01 19:57