1./描述 //牛牛刚学会数组不久,他拿到两个数组 a 和 b,询问 b 的哪一段连续子数组之和与数组 a 之和最接近。 //如果有多个子数组之和同样接近,输出起始点最靠左的数组。 //输入描述: //第一行输入两个正整数 n 和 m ,表示数组 a 和 b 的长度。 //第二第三行输入 n 个和 m 个正整数,表示数组中 a 和 b 的值。 //输出描述: //输出子数组之和最接近 a 的子数组
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int main()
{
int n = 0;
int m=0;
while((scanf_s("%d %d", &n, &m))!=EOF);
{
int arr[] = { 0 };
int brr[] = { 0 };
int numa = 0;
int i = 0;
int j = 0;
for (i = 0; i < n; i++)
{
scanf_s("%d", &arr[i]);
numa += arr[i];
}
for (j = 0; j < m; j++)
{
scanf_s("%d", &brr[j]);
}
int left = 0;
int right = 1;
int min = numa;
int sum = 0;
int cl = 0;
int cr = 0;
if (m == 1)
{
printf("%d", brr[0]);
return 0;
}
while (left < right && right < m)
{
sum = 0;
// sum = brr[left]+brr[right];
for (int i = left; i <= right; i++)
{
sum += brr[i];
}
if (abs(sum - numa) < min)
{
min = abs(sum - numa);
cl = left;
cr = right;
}
if (sum > numa)
{
left++;
}
if (sum < numa)
{
right++;
}
}
for (int i = cl; i <= cr; i++)
{
printf("%d ", brr[i]);
}
}
return 0;
}
各层封装关系 封装时细节/tips Rfr Ptr用来constiterator
//HTIterator 模板
template<class K, class T, class Ptr, class Rfr, class KeyOfT, class Hash>
class HTIterator//普通Iterator类 & const_iterator类
typedef HTIterator<K, T, T*, T&, KeyOfT…