题目描述:
给一个包含n个整数的数组S,找到与给定目标整数最接近的三个整数,并且返回这三个整数的和。
输入描述:
第一个参数为给定的目标整数,后面跟随不定数量的整数数组。
输出描述:
输出与给定目标整数最接近的三个整数的和。
示例1
输入:
3 2 7 11 15
输出:
20
说明
2+7+11=20
示例2
输入:
1 -1 2 3 -4
输出:
4
说明
-1+2+3=4
int main()
{
int target;
cin>>target;
vector<int> num;
int mm;
while(cin>>mm)
{
num.push_back(mm);
if(cin.get()=='\n') break;
}
int len=num.size();
sort(num.begin(),num.end());// 将num排好序
int targetIndex=0;
for(int i=1;i<len;i++) //找到target在数组里面的位置targetIndex
{
if(num[i]>=target)
{
if(num[i]-target<target-num[i-1])
{
targetIndex=i;
break;
}
else
{
targetIndex=i-1;
break;
}
}
}
if(targetIndex==0) cout<<num[0]+num[1]+num[2];
else cout<<num[targetIndex-1]+num[targetIndex]+num[targetIndex+1];
return 0;
}
或者好友写的python程序: