问题描述:在两个有序数组中,分别找出a,b两个元素满足a+b = c,c已知。
分析:我们要用有序这个有利条件,避免循环中套循环。我们用两个索引i,j分别指向数组A,B的首尾,根据比较的结果来移动索引的位置。
如果
A[i] + B[j] < c , i++
A[i] + B[j] > c , j--
A[i] + B[j] == c , i++,j--
void fin2m(int *a,int m,int *b,int n,int c)
{
int i=0,j=n-1;
while(i<m && j>=0)
{
if(a[i]+b[j]>c)
j--;
else if(a[i]+b[j]<c)
i++;
else
{
cout << a[i] << ", " << b[j] << endl;
i++;
j--;
}
}
}