举一反三:
#include <iostream>
#define N 5
#define K 5
using namespace std;
void SearchLatestK();
int arrA[] = {2,5,8,10,11};
int arrB[] = {1,3,5,7,9};
int arrC[K];
int main(int argc, char const *argv[])
{
SearchLatestK();
for(int i = 0; i < K; i++)
cout<<arrC[i]<<" ";
return 0;
}
void SearchLatestK(){
int count = 1;
int i = 0, j = 1, compi = 1, compj = 0;
arrC[0] = arrA[0] + arrB[0];
while(count < K){
if((arrA[i] + arrB[j]) < (arrA[compi] + arrB[compj])){
arrC[count++] = arrA[i] + arrB[j];//两数组首元素相加肯定最小。
j = ++j == N ? 0,i = compi+1 : j;//这样的语法也可以,初尝试。
}
else{
arrC[count++] = arrA[compi] + arrB[compj];
compj = ++compj == N ? 0,compi = i + 1 : compj;
}
if (i == N ){//当其中一个数组走到了尽头,说明只剩下最后一组和了
while(count < K) arrC[count++] = arrB[compj];
return;
}
else if( compi == N){
while(count < K) arrC[count++] = arrB[j];
return;
}
}
}