屏幕剪辑的捕获时间: 2017/5/2 11:44
双指针来寻找某一段的连续和为某一定值需注意数组元素时递增的
代码如下:
#include<bits/stdc++.h>
using namespace std;
void fun(int *a,intn,unsigned int m)
{
int i,j; //游标i 与j
i=j=0;
int sum=a[0]; // sum开始值是 a【0】 开始向下叠加 直到sum》=m进行判断
while(i<=j&&j<n)
{
if(sum>=m) //进行判断
{
if(sum==m) //如果等于m则进行输出结果
cout<<i+1<<""<<j+1<<endl;
sum-=a[i]; //如果不等于m且大于m 则减去最前面的一个数 这个数实在a【i】中的最开始的值
++i; //游标开始移动
}
else
{
++j; //当sum《m时 j游标向下
sum+=a[j]; //并且sum开始叠加值直到sum》=m进行 输出判断
}
}
}
int main()
{
int a[1000],i;
int n,m;
cin>>n; //数组的元素大小
for(i=0;i<n;i++)
cin>>a[i]; //个元素值
cin>>m; //某段之和相加为此值
fun(a,n,m);
return 0;
}