最近学习图像处理,在画累计直方图的算法中,要统计小于等于灰度值i的像素个数。此题思路与该算法十分类似,统计前i项的和与前j项和,两者相减即为一段连续区间的累加求和结果。其实不用map映射即可得出结果。
源码附上:
#include <iostream>
using namespace std;
int A[10001];
int sum[10001];
int main()
{
int N,K;
cin>>N>>K;
int i,j,flag=0;
for(i=1;i<=N;i++)
{
cin>>A[i];
sum[i]=sum[i-1]+A[i];
}
for(i=0;i<=N;i++)
{
for(j=i;j<=N;j++)
{
if((sum[j]-sum[i])==K)
{
cout<<i+1<<" "<<j<<endl;
flag=1;
break;
}
}
if(flag==1)
{
break;
}
}
if(flag==0)
cout<<"No Solution"<<endl;
return 0;
}