2018华为春招实习笔试

今天晚上做了一下华为的春招实习题,对于我这种非Acmer来说,感觉难度不大。。

第一题

忘记题目了。。

代码:

#include<cstdio>
#include <cstring>
int main(){
    char str[100];
   scanf("%s",str);
        int len = strlen(str);
        int max = 0;
        for (int i = 0; i < len ; i++)
            for (int j = len - 1; j > 0; j--) {
                if (str[i] == str[j])
                    if (max < j - i + 1)
                        max = j - i + 1;
            }
        printf("%d", max);
    return 0;
}

第二题:

输入一串IPV6的地址,输出判断属于哪种网络类型

#include<stdio.h>
int move(int a,int n){
    a=a>>n;
   return a;
}
int main(){
    char str[100]={0};
    scanf("%s",str);
    int a[8]={0};
    int b=0;
    b=sscanf(str,"%0x:%0x:%0x:%0x:%0x:%0x:%0x:%0x",&a[0],&a[1],&a[2],&a[3],&a[4],&a[5],&a[6],&a[7]);
    if(b!=8)
        printf("Error\n");
    else if((move(a[0],8)&0x00ff)==0x00ff)
        printf("Multicast\n");
    else if((move(a[0],4)&0x0fec)==0x0fec)
        printf("SiteLocal\n");
    else if((move(a[0],4)&0x0fe8)==0x0fe8)
        printf("LinkLocal\n");
    else if((a[0]|a[1]|a[2]|a[3]|a[4]|a[5]|a[6]|a[7])==1)
        printf("Loopback\n");
    else if((a[0]|a[1]|a[2]|a[3]|a[4]|a[5]|a[6]|a[7])==0)
        printf("Unspecified\n");
    else printf("GlobalUnicast");
    return 0;
}

第三题

dp问题,输入三行,第一行流量,第二行每个应用的消耗流量,第三行每个应用能够得到的金币数。

例如:
输入
40
12 13 23 36
11 11 20 30
输出:1 3

分析:可以发现,题目并没有说n是多少,这是一个坑点,没有类似的经验,栽了跟头,
其实可以通过cin求出来,因为没有考虑相同金币数取排名靠前的,所以此题只过了一半,有待优化解决

#include <stdio.h>
#include <cstdlib>
#include <iostream>
using namespace std;
int main(){
    int n=0;
    scanf("%d ",&n);
    int a[100]={0};
    int b[100]={0};
    int i=0;
    int max=0;
    while(cin>>a[i++],cin.get()!='\n');  //这里就可以将输入的个数求出来
    int len=i;
    int o=0,k=0;
    for(int i=0;i<len;i++)
        scanf("%d",b+i);
   for(int i=0;i<len;i++){
       for(int j=0;j<len;j++){
           if(a[i]+a[j]<=40)
               if(max<=b[i]+b[j]){
                   max=b[i]+b[j];
                   o=i;
                   k=j;
               }
       }
   }
    printf("%d %d",o+1,k+1);
    return 0;
}

小结
这次华为的笔试应该不难,只要本科不是特别水,一般都能够AC两道题,唉,看来我也需要再加把劲了。

猜你喜欢

转载自blog.csdn.net/mikeoperfect/article/details/79810068