Algorithm 具有给定和子数组的查找子数组应是连续的
具有给定和子数组的查找子数组应该是连续的。Algorithm 具有给定和子数组的查找子数组应是连续的,algorithm,data-structures,Algorithm,Data Structures,具有给定和子数组的查找子数组应该是连续的。 这个问题来自极客 int子数组和(int-arr[],int-n,int-sum) { /*将curr_sum初始化为第一个元素的值 起点为0*/ int curr_sum=arr[0],start=0,i; /*将元素逐个添加到curr_sum,如果curr_sum超过 求和,然后删除起始元素*/ 对于(i=1;i sum&&start
这个问题来自极客
int子数组和(int-arr[],int-n,int-sum)
{
/*将curr_sum初始化为第一个元素的值
起点为0*/
int curr_sum=arr[0],start=0,i;
/*将元素逐个添加到curr_sum,如果curr_sum超过
求和,然后删除起始元素*/
对于(i=1;i sum&&start
在这里,我们使用条件而(curr\u sum>sum&start
- 输入:arr[]={1,4},和=0
- 输出:未找到子阵列
int subArraySum(int arr[], int n, int sum)
{
/* Initialize curr_sum as value of first element
and starting point as 0 */
int curr_sum = arr[0], start = 0, i;
/* Add elements one by one to curr_sum and if the curr_sum exceeds the
sum, then remove starting element */
for (i = 1; i <= n; i++)
{
// If curr_sum exceeds the sum, then remove the starting elements
while (curr_sum > sum && start < i-1) // Check This
{
curr_sum = curr_sum - arr[start];
start++;
}
// If curr_sum becomes equal to sum, then return true
if (curr_sum == sum)
{
printf ("Sum found between indexes %d and %d", start, i-1);
return 1;
}
// Add this element to curr_sum
if (i < n)
curr_sum = curr_sum + arr[i];
}
// If we reach here, then no subarray
printf("No subarray found");
return 0;
}