![]() |
1
0
这就是我解决问题的方法。这不一定是最佳的解决方案,但我相信它应该有效。 考虑数组:{1,-2,3,5,-4},并考虑如何手动编写所有子数组:
看起来最大的总和是8。 你应该在这里看到一个模式,我从数组的长度开始,这里是5 case,并将其减少一,直到我处理了一个元素数组。我还从数组的第零个元素开始,并尝试在给定长度的情况下生成一个有效的数组。例如,如果我使用四个元素数组,从数组元素0开始,它可以通过数组[0]->数组[3]和数组[1]->array[4](这是数组切片,一些语言如Python有执行数组切片的显式表示法,C没有)。生成每个切片后,对元素求和,完成后查找最大值。 现在,我会这样编码
现在剩下的就是写
我在里面撒了一些printf,这样你就可以看到程序循环时发生了什么。我的切片表示法是[start:length],所以[1:3]将是从索引1开始的数组,长度为3( 即 数组[1]、数组[2]、数组[3])。
将以上内容编译为
N、 B.我在Windows 7 Professional上用gcc 4.8.3版(来自mingw)编译了这个。 |
![]() |
MaPo · Linux,设置锁定ICMP_过滤器选项 7 月前 |
![]() |
Doohyeon Won · 内联函数上的奇怪现象?[关闭] 7 月前 |
![]() |
Bobby · 复合字面值总是左值吗? 7 月前 |
![]() |
9-Pin · C: 嵌套结构的堆栈内存分配 7 月前 |