百度2017秋招笔试真题ios
1. 买帽子spa
【分析】STL set,去重后取第三小的值便可。注意输出-1的情形:set中的元素个数<3。code
#include <iostream> #include <set> using namespace std; int N; int a[55]; set<int> hat; set<int>::iterator it; int main() { int i; cin>>N; for(i=0;i<N;i++) { cin>>a[i]; hat.insert(a[i]); } if(hat.size()<3) cout<<"-1"<<endl; else { it=hat.begin(); it++,it++; cout<<*it<<endl; } return 0; }2. 度度熊回家
【分析】暴力求解法。枚举全部的点,而后维护答案便可。ci
#include <stdio.h> #include <math.h> #include <string.h> #define maxn 105 #define INF 99999999 int N,x; int a[maxn]; int is_point[2*maxn]; int main() { int i,j; int cur,sum,mindist; scanf("%d",&N); for(i=0;i<N;i++) { scanf("%d",&a[i]); is_point[a[i]+100]=1; } mindist=INF; for(i=1;i<N-1;i++) { is_point[a[i]+100]=0; sum=0; cur=a[0]; for(j=1;j<N;j++) { if(is_point[a[j]+100]) { sum+=(fabs(cur-a[j])); cur=a[j]; } } is_point[a[i]+100]=1; if(sum<mindist) mindist=sum; } printf("%d\n",mindist); return 0; }3. 寻找三角形
【分析】暴力枚举+统计。注意求三角形面积时可以使用叉积或海伦公式。string
#include <iostream> #include <cstdio> #include <cmath> using namespace std; const int maxn=105; int N; struct Triangle { char color; int x; int y; int z; } t[maxn]; int main() { int i,j,k; double a,b,c,p,S; double maxarea=0; cin>>N; for(i=0;i<N;i++) cin>>t[i].color>>t[i].x>>t[i].y>>t[i].z; for(i=0;i<N;i++) { for(j=i+1;j<N;j++) { for(k=j+1;k<N;k++) { if((t[i].color==t[j].color && t[j].color==t[k].color) || (t[i].color!=t[j].color && t[j].color!=t[k].color && t[i].color!=t[k].color)) { a=sqrt(pow((t[i].x-t[j].x),2)+pow((t[i].y-t[j].y),2)+pow((t[i].z-t[j].z),2)); b=sqrt(pow((t[i].x-t[k].x),2)+pow((t[i].y-t[k].y),2)+pow((t[i].z-t[k].z),2)); c=sqrt(pow((t[j].x-t[k].x),2)+pow((t[j].y-t[k].y),2)+pow((t[j].z-t[k].z),2)); p=(a+b+c)/2; S=sqrt(p*(p-a)*(p-b)*(p-c)); maxarea=max(S,maxarea); } } } } printf("%.5lf\n",maxarea); return 0; }