今天分享一下热乎乎的美图2018届校园招聘编程题的代码实现,详情如下。
首先揭秘一下四天前的智商题:
解答:再倒出一片A,然后把这四颗药片各自一分为二,吃每颗药片的一半,剩下的明天吃即可。
注:(如果分完之后,再搞混,那么就别吃了,无药可医)
输出数组中第二大的值。
代码实现
#include<iostream>
using namespace std;
#include<cmath>
int findSecMax(int data[] , int count){
if(count<2) return -1;
int num=0;
int i=0;
for(; i<count && num<2; i++){
int j=1;
for(; j<count-i; j++){//此处可改进,设标志位
if(data[j]<data[j-1])
swap(data[j],data[j-1]);
}
if(j==count)
num=1;
else{
if(data[j]!=data[j+1])
num++;
}
}
if(num==2)
return data[count-i];
else
return -1;
}
int main(){
int count;
cin>>count;
int* data=new int[count];
for(int i=0; i<count; i++){
cin>>data[i];
}
cout<<findSecMax(data, count)<<endl;
delete[] data;
return 0;
}
求斐波那契数列
代码实现
#include<iostream>
using namespace std;
#include<cmath>
// 1 1 2 3 5
int FibR(int n){//递归解法70%
if(n<2) return n;
return FibR(n-1)+FibR(n-2);
}
int Fib(int n){//非递归
if(n<2) return n;
int count=0;
int prev=0;
int cur=1;
for(int i=2; i<=n; i++){
count=prev+cur;
prev=cur;
cur=count;
}
return count%1000000000;
}
int main(){
long long n;
cin>>n;
cout<<Fib(n)<<endl;
//cout<<FibR(n)<<endl;//递归
return 0;
}
分享如上,今天没有智商题,不积跬步无以至千里,愿给位朋友学的开心,考的都会,会的都对。^_^