最近见到的一些2017年的名企校招题

来源:互联网 发布:最优化理论与方法pdf 编辑:程序博客网 时间:2024/06/01 17:15
#include <stdlib.h>#include <stdio.h>#include <iostream>#include <string.h>#include <vector>#include <numeric>#include <algorithm>using namespace std;#if 0long fibonacci1(int n){    if(n<=2)        return 1;    else    {        long num1=1;        long num2=1;        for(int i=2; i<n-1; i++)        {            num2=num1+num2;            num1=num2-num1;        }        return num1+num2;    }}int fibonacci(int n) ///递归求解的时间复杂度为o(n){    cout<<"calculating "<<n<<endl;    if (n<=0)    {        return  0;    }    if (n==1)    {        return 1;    }    return fibonacci(n-1)+fibonacci(n-2);}long fibonacci2(int n){    if(n<=0)    {        return 0;    }    if(n==1)    {        return 1;    }    int min=0;    int max=1;    int i=2;    int result=0;    while(i<=n)    {        result=min+max;        min=max;        max=result;        ++i;    }    return result;}int main(int argc,char *argv){    int N;    cin>>N;    cout<<fibonacci(N)<<endl;    return 0;}#endif#if  0  ///十进制和十二进制的转换(华为17年校招)void solve(int num);int main(){    int num;    while(cin>>num)    {        solve(num);    }    return 0;}void solve(int num){    if(num==0)    {        cout<<"0"<<endl;        return;    }    char c;    vector<char> s;    while(num)    {        if(num%12==10)        {            c='A';        }        else if(num%12==11)        {            c='B';        }        else        {            c=num%12+'0';        }        s.push_back(c);        num=num/12;    }    vector<char>::iterator vi;    for(vi=s.end()-1; vi>=s.begin(); vi--)    {        cout<<(*vi);    }    cout<<endl;    return;}#endif#if 0   ///缘分匹配(华为17年校招)int main(int argc,char *argv){    int N,M;    int i,j;    cin>>N;    M=2*N;    int array[50]= {0};    int man[20]= {0};    int man_var=0;    int woman[20]= {0};    int woman_var=0;    int totel;    for(i=0; i<M; i++)    {        cin>>array[i];    }    for(i=0; i<M; i++)    {        man_var +=array[i];        man[i] =  man_var;    }    printf("man ");    for(i=0; i<M; i++)    {        printf("man[i]=%d ",man[i]);    }    printf("\n");    for(j=M-1; j>=0; j--)    {        woman_var +=array[j];        woman[j]=woman_var;    }    printf("woman ");    for(i=0; i<M; i++)    {        printf("woman[i]=%d ",woman[i]);    }    printf("\n");    int count=0;    for(i=0; i<M; i++)    {        for(j=0; j<M; j++)        {            if(man[i]==woman[j])            {                count++;            }        }    }    printf("count=%d\n",count);    return 0;}#endif // 1///测试动态分配内存的传值或者传址#if 0void allocate(char *&p,int size){    cout<<&p<<endl;    p=(char *)malloc(size);}int main(){    char *str=NULL;    cout<<&str<<endl;    allocate(str,100);    strcpy(str,"hello world!");    printf("%s\n",str);    free(str);    return 0;}#endif // 0#if 0struct elem{    int val;    int index;};int main(){    int i,j;    int task[]= {0,30,155,1,80,300,170,40,99};    struct elem small[20];    int small_index=0;    struct elem big[20];    int big_index=0;    int length=sizeof(task)/sizeof(task[0]);    for(i=0;i<length;i++){        if(task[i]<50){            small[small_index].val=task[i];            small[small_index].index=i;            //printf("%d\n",small[small_index].val);            small_index++;        }else {            big[big_index].val=task[i];            big[big_index].index=i;            //printf("%d\n",big[big_index].val);            big_index++;        }    }    for(i=0;i<small_index;i++){        printf("%d %d\n",small[i].val,small[i].index);    }    for(i=0;i<big_index;i++){        printf("%d %d\n",big[i].val,big[i].index);    }    return 0;}#endif#if 0   ///身份证验证int str2num(char *src,int len){    int i=0;    int res=0;    int flag=1;    for(i=len-1;i>=0;i--){        res +=(src[i]-'0')*flag;        flag *=0;    }    return res;}int verifyIDCard(char *input){    int i=0;    int year=0;    int month=0;    int day=0;    int len=strlen(input);    if(len!=18)        return 1;    for(i=0;i<17;i++){        if((input[i]<'0')||(input[i]>'9'))            return 2;    }    if((input[17]<'0')||(input[17]>'9')||(input[17]!='x'))        return 3;    year=str2num(input+6,4);    month=str2num(input+10,2);    day=str2num(input+12,2);    if(year<1900 || year>2100)        return 4;    if(month<1 || month>12) return 5;    if(day<1 || day>31) return 6;    if(month==2){        if(year%4==0)&&(year%100!=0)||(year%400==0){            if(day>29) return 0;        }else{            if(day>28) return 6;        }    }    return 0;}int main(int argc,char *argv){   char input[]="412829198808015258";   verifyIDCard(input);   return 0;}#endif // 1#if 0 ///华为oj平台基础题int string2int(char *s,int len){    int res=0;    int f=1;    int i=0;    for(i=len-1;i>=0;i--){        res=res+(s[i]-'0)*f;        f=f*10;    }    return res;}bool isIPAdressValid(char *ip){    int len=0,i=0,j=0,k=0;    int count=0;    char src[100]={0};    char s[10]={0};    if(IP==0 || IP==" ")        return false;    while(ip[len]){        src[len]=ip[len];        len++;    }    src[len]='\0';    for(i=0;i<len;i++){        if((i==0||i=len-1)&&(src[i]==' '))            continue;        if((src[i]<'\0'||src[i]>'9')&&(src[i]!='.')&&(src[i]!=' '))            return false;        s[j++];        if(src[i]=='.'){            count++;            if(src[i+1]=='.' || src[i+1]=='\0')                return false;            if(j>4)                return false;            if(j>2 &&s[0]=='0')                return false;            for(k=0;k<j-1;k++){                if(s[k]==' ')                    return false;            }            if(j==4){                if(string2int(s,3)>255)                    return false;            }            j=0;        }    }    if(count!=3) return false;    return true;}int main(int argc,char *argv){    char IP[]="192.168.1.110";    isIPAddressValid(const char *pszIPAddr);    return 0;}#endif // 1#if 0   ///京东17年秋招进制均值int hexSum(int n,int a){    int sum=0;    while(n){        sum +=(n%a);        n=n/a;        printf("sum=%d,n=%d\n",sum,n);    }    return sum;}int main(){    int A;    int tmp;    int temp1;    while(cin>>A){        int sum=0;        for(int i=2;i<=A-1;i++){            sum +=hexSum(A,i);        }        printf("total=%d\n",sum);        tmp=9;        temp1=3;        while(temp1!=tmp){             if (temp1>tmp)  temp1=temp1-tmp;            else  tmp=tmp-temp1;        }        printf("temp1=%d\n",temp1);        //int r=_gcd(sum,A-2);        cout<<sum<<'/'<<(A-2)<<endl;    }    return 0;}#endif#if 0 ///京东17年秋招试题 通过考试const int maxn=105;int n,a[maxn];double dp[maxn][maxn];int main(int argc,char* argv){    scanf("%d",&n);    for(int i=1;i<=n;i++){        scanf("%d",&a[i]);    }    dp[0][0]=1;    for(int i=1;i<=n;i++){        dp[i][0]=dp[i-1][0]*(100.0-a[i])/100;        for(int j=1;j<=i;j++){            dp[i][j]=dp[i-1][j]*(100.0-a[i])/100+dp[i-1][j-1]*1.0*a[i]/100;        }    }    int begin=(3*n+4)/5;    double ans=0;    for(int i=begin;i<=n;i++){        ans += dp[n][i];    }    printf("%.5f\n",ans);    return 0;}#endif // 1#if 0   ///京东17年秋招-异或int main(int argc,char *argv[]){    int i=0;    char str1[]="1100";    char str2[]="0100";    int len=strlen(str1);    char str[5]={0};    for(i=0;i<len;i++){        int int_str1=str1[i]-'0';        int int_str2=str2[i]-'0';        printf("%d %d\n",int_str1,int_str2);        if(int_str1==int_str2){            str[i]='0';        }else {            str[i]='1';        }    }    for(i=0;i<len;i++){        printf("%c\n",str[i]);    }    int sum=0;    /*for(i=len-1;i<=0;i--){        if(i==len-1){             sum =(str[i]-'0');        }else{            sum += (str[i]-'0')*2;        }    }*/    for(i=0;i<len;i++){        sum *=2;        sum +=str[i]-'0';    }    printf("sum=%d\n",sum);    return 0;}#endif // 0#if 1  ///京东17年校招拍卖产品const int maxn=1005;int a[maxn];int main(int argc,char *argv){    int n,m,ans=0,pos=0;    scanf("%d%d",&n,&m);    int i=0;    for(i=1;i<=m;i++){        scanf("%d",&a[i]);    }    sort(a+1,a+1+m);    for(i=1;i<=m;i++){        if(ans<a[i]*min(n,m-i+1)){            ans=a[i]*min(n,m-i+1);            pos=a[i];        }    }    printf("%d\n",pos);    return 0;}#endif // 1

原创粉丝点击