在本文中,我们需要找到给定序列中大于给定数字X的段或子数组的数量。
我们只能计算重叠的段一次,相邻的两个元素或段不应单独计数。因此,这里是给定问题的基本示例−
Input : arr[ ] = { 9, 6, 7, 11, 5, 7, 8, 10, 3}, X = 7Output : 3Explanation : { 9 }, { 11 } and { 8, 10 } are the segments greater than 7Input : arr[ ] = { 9, 6, 12, 2, 11, 14, 8, 14 }, X = 8Output : 4Explanation : { 9 }, { 12 }, { 11, 14 } and { 14 } are the segments greater than 8
登录后复制
寻找解决方案的方法
天真的方法
在这个问题中,我们用 0 初始化变量state并开始处理给定的数组,当找到大于 X 的元素时,将状态更改为 1,并继续处理元素;当找到小于或等于 X 的数字时,将状态更改回 0,每次状态变为 1 并返回时,将 count 增加 1到 0。
示例
#include using namespace std;int main (){ int a[] = { 9, 6, 12, 2, 11, 14, 8, 14 }; int n = sizeof (a) / sizeof (a[0]); int X = 8; int state = 0; int count = 0; // traverse the array for (int i = 0; i X){ state = 1; } else{ // if flag is true if (state) count += 1; state = 0; } } // checking for the last segment if (state) count += 1; cout输出
Number of segments where all elements are greater than X: 4登录后复制
上述程序说明
在上面的程序中,我们使用状态作为开关,当找到大于 X 的数字时将其设置为 1,当找到大于 X 的数字时将其设置为 0找到小于或等于 X 的数字,每次状态变为 1 并返回到 0 时,我们将计数加 1。最后,打印存储在计数中的结果。
立即学习“C++免费学习笔记(深入)”;
结论 h2>
在本文中,我们通过应用每当找到段时将状态设置为 1 和 0 的方法来解决查找所有元素都大于 X 的段数的问题。我们可以用任何其他编程语言(例如 C、Java、Python 等)编写此程序。
以上就是使用C++编写,找出所有元素都大于X的段的数量的详细内容,更多请关注【创想鸟】其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。
发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2582573.html