亚洲喷奶水中文字幕电影,日本aⅴ高清一区二区三区,欧美亚洲日本国产,欧美日韩亚洲中文字幕

<legend id="flx4p"><abbr id="flx4p"><thead id="flx4p"></thead></abbr></legend>

<mark id="flx4p"><thead id="flx4p"></thead></mark>

      我要投稿 投訴建議

      華為筆試真題

      時(shí)間:2021-02-21 14:57:58 筆試題目 我要投稿

      2017華為筆試真題

        華為上機(jī)考試有哪些考點(diǎn)呢?以下是CN人才網(wǎng)小編整理的2017華為筆試真題,歡迎閱讀參考!

      2017華為筆試真題

        2017華為筆試真題一

        1. 編寫(xiě)函數(shù)string deletestring(string str,string sub_str)從str中查找匹配的字符串sub_str,采用最左匹配,且輸出形式為str+"_"+匹配的次數(shù)

        題目一的意思應(yīng)該是求解字符串str中子字符串sub_str的個(gè)數(shù),同時(shí)輸出形式采用原字符串+"_"匹配次數(shù)

        相信大家第一反應(yīng)應(yīng)該是采用kmp,那么下面給出常規(guī)優(yōu)化kmp程序如下(采用字符串?dāng)?shù)組形式):

        #include

        using namespace std;

        int next[100];

        void getnext(char b[])

        {

        int i=1,j=0; //ij

        next[1]=0;

        while(i<=strlen(b))

        {

        if(j==0||b[i-1]==b[j-1])

        {

        i++;

        j++;

        next[i]=j;

        }

        else j=next[j]; //

        }

        }

        int kmp(char a[],char b[])

        {

        int i=1,j=1; //i j

        while(i<=strlen(a)&&j<=strlen(b))

        {

        if(j==0||a[i-1]==b[j-1])

        {

        i++;

        j++;

        }

        else j=next[j];

        }

        if(j>strlen(b))

        return i-strlen(b);

        else return 0;

        }

        2. 高精度數(shù)相加,string addBigInt(string num1,string num2) 需要考慮正負(fù)數(shù)相加

        這道題是高精度計(jì)算中的最最簡(jiǎn)單的一題:

        目的是模擬人手工運(yùn)算的過(guò)程,進(jìn)而進(jìn)行結(jié)果的現(xiàn)實(shí);

        參考代碼(編譯環(huán)境:Visual Studio 6):

        2017華為筆試真題二

        1 (1) 字母大小寫(xiě)反轉(zhuǎn)

        這到題沒(méi)什么可說(shuō)的,只是我很久沒(méi)寫(xiě)這樣要IO輸入輸出的代碼,當(dāng)時(shí)看到華為的提示紙條上寫(xiě)著“只能使用stdin方式輸入”,還愣了一會(huì):一定是我打開(kāi)方式不對(duì),什么時(shí)候有了一個(gè)stdin的輸入函數(shù)?難道我又學(xué)藝不精了……后面才反應(yīng)過(guò)來(lái),直接按英文字面意思理解為“只能使用標(biāo)準(zhǔn)輸入方式”就好了。好了,言歸正傳,回到這道題,至少可以用以下兩種方式:

        C++ STL庫(kù)string中 有 isupper , islower , toupper ,tolower 函數(shù)

        通過(guò) +/- ('a'-'A'+0)

        (2) n個(gè)人圍成一圈,從第1個(gè)人開(kāi)始報(bào)數(shù),每報(bào)到第m個(gè)人,則其出局,求最后出局的人的初始序號(hào)。

        第1種方法,我當(dāng)時(shí)是用了個(gè)狀態(tài)表來(lái)記錄這人有沒(méi)有出局,沒(méi)出局則報(bào)數(shù)計(jì)數(shù)器加1并玩下走,碰到第m個(gè)報(bào)數(shù)號(hào)則更新?tīng)顟B(tài)為已出局,碰到隊(duì)伍最末則重新移動(dòng)到隊(duì)首。

        #include

        #define N 4

        #define M 3

        using namespace std;

        int *man = NULL;

        int JosephusSol_statusTab(int n,int m)

        {

        int sn=0 , pos = 0 ,loop_pos=0;

        do

        {

        if( man[pos] == 0 ){//此人未出局

        loop_pos++;

        if(loop_pos == m){//找到一輪報(bào)數(shù)的出局者

        sn++;

        man[pos] = sn ; // 標(biāo)記出局序號(hào)

        loop_pos = 0;

        }

        }

        pos ++ ;

        if(pos==n)

        pos = 0;

        }while(sn!=n);

        return pos;

        }

        int main()

        {

        int sn=0 , pos = 0 ,loop_pos=0;

        man = new int [N];

        for(int i=0;i

        man[i] = 0;

        pos = JosephusSol_statusTab(N,M);

        cout << pos <

        if(man != 0)

        delete [] man;

        return 0;

        }

        第2種方法是雙向鏈表,技術(shù)面面試的時(shí)候,面試官就考了我這一題,在紙上快速寫(xiě)代碼的能力還是有所欠缺。

        第3種方法是遞歸,

        第0次報(bào)數(shù)(即初始排列狀態(tài))如下:

        1

        2

        ……

        n

        第1次報(bào)數(shù)到m,剔除后的序列為:

        m+1

        m+2

        …

        n

        1

        2

        …

        m-1

        重新編號(hào)的話(huà)為:

        1

        2

        …

        n-m

        n-m+1

        n-m+2

        …

        n-1

        設(shè)f(n,m)為n個(gè)人的隊(duì)伍,剔除報(bào)數(shù)人m,最后留下的人的序號(hào);f(n-1,m)為n-1個(gè)人的'隊(duì)伍,剔除報(bào)數(shù)人m,最后留下的人的序號(hào)。則有:

        考慮到第1次報(bào)數(shù)后的序列號(hào)n的情況,可得到統(tǒng)一的公式為:

        這就是這個(gè)問(wèn)題的一個(gè)遞歸公式,實(shí)現(xiàn)代碼如下:

        #include < iostream >

        using namespace std;

        int JosephusSol_mathRecursion( int n, int m)

        {

        if (n == 1 )

        return 1 ;

        else

        return (JosephusSol_mathRecursion(n - 1 ,m) + m - 1 ) % n + 1 ;

        }

        int main()

        {

        cout << JosephusSol_mathRecursion( 4 , 3 ) << endl ;

        return 0 ;

        }

        3.兩段長(zhǎng)度為1-5000變換的單詞word1,word2,設(shè)計(jì)一個(gè)字母權(quán)重分配方案:該方案中不區(qū)分大小寫(xiě)字母;該方案A-Z的字母唯一對(duì)應(yīng)一個(gè)1-26的數(shù);該方案滿(mǎn)足word1的字母權(quán)重和與word2的字母權(quán)重和的差值最大 。

        這個(gè)問(wèn)題是實(shí)質(zhì)是比較單詞,剔除相同的部分,看哪個(gè)剩余部分多,剩余多的單詞部分再進(jìn)行一個(gè)字母頻率從大到小排列,頻率最高的給最大的權(quán)重——26,頻率低一些的依次給剩余的最大權(quán)重;剩余的單詞部分再進(jìn)行一個(gè)字母頻率也是從大到小排列,只不過(guò)頻率最高的給最小的權(quán)重——1,頻率高一些的依次給剩余的最小權(quán)重。

        至于實(shí)現(xiàn),若是先直接比較單詞,再字母頻率統(tǒng)計(jì),工作量有點(diǎn)大?梢钥紤]直接用 字母表A-Z為索引,將單詞裝換為字母表A-Z的編碼(更形象點(diǎn),即將雜亂的單詞變成一個(gè)26進(jìn)制數(shù),當(dāng)然這樣沒(méi)有包含單詞的全部信息——字母在單詞中的排序就不知道,所以可以裝換成26個(gè)節(jié)點(diǎn),每個(gè)節(jié)點(diǎn)還含有一個(gè)排序數(shù)組,如單詞daddy,相對(duì)應(yīng)的d節(jié)點(diǎn)下就含有一個(gè)size為3的數(shù)組,有sn['d'][3]={0,2,3}。當(dāng)然本題只需要一個(gè)量就是size['d']=3。)

        #include

        #include

        #include

        using namespace std;

        int main()

        {

        string str1("mother"),str2("father");

        // string str1,str2;

        // cin >> str1 >> str2;

        size_t i = 0 ,j =0;

        vector status1(26,0);

        vector status2(26,0);

        vector diff(26,0);

        vector negative(26,0);

        vector positive(26,0);

        int cntNeg = 0 , cntPos = 0;

        for( i = 0; i< str1.size(); i++)

        {

        char c = str1[i];

        if( 'a'<=c && c <= 'z' ){

        status1[c -'a' + 0]++;

        }

        if( 'A'<=str1[i] && str1[i] <= 'Z' ){

        status1[c-'A'+ 0]++;

        }

        }

        for( i = 0; i< str2.size(); i++)

        {

        char c = str2[i];

        if( 'a'<=str2[i] && str2[i] <= 'z' ){

        status2[c -'a' + 0]++;

        }

        if( 'A'<=str2[i] && str2[i] <= 'Z' ){

        status2[c -'A' + 0]++;

        }

        }

        for( i = 0; i< 26; i++){

        diff[i] = status2[i] - status1[i];

        if(diff[i]<0)

        {

        negative[i] = -diff[i];

        cntNeg += negative[i];

        }

        else

        {

        positive[i] = diff[i];

        cntPos += positive[i];

        }

        }

        for( i = 0; i< 26; i++)

        cout << ' '<< status1[i] <<' '<< status2[i] <<' '<< diff[i] << endl;

        int tmp= 0;

        int a[26],b[26];

        cout << ' '<< cntNeg <<' '<< cntPos;

        for( i = 0 ; i < 26;i++ )

        {

        a[i] = 26-i;

        b[i] = i+1;

        }

        for( i = 0 ; i < 26;i++ )

        for(j = i+1 ;j <26;j++)

        {

        if( negative[i] < negative[j] ){

        tmp = negative[i];

        negative[i] = negative[j];

        negative[j] = tmp;

        }

        }

        for( i = 0 ; i < 26;i++ )

        for(j = i+1 ;j <26;j++)

        {

        if( positive[i] < positive[j] ){

        tmp = positive[i];

        positive[i] = positive[j];

        positive[j] = tmp;

        }

        }

        int out=0 , large = 0, small =0 ;

        for( i = 0 ; i < 26;i++ )

        {

        if( cntNeg >= cntPos ) {

        large += a[i]*negative[i];

        small += b[i]*positive[i];

        }

        else{

        large += a[i]*positive[i];

        small += b[i]*negative[i];

        }

        }

        out = large - small;

        cout << out ;

        return 0;

        }

        2.華為2013年在長(zhǎng)沙的一個(gè)機(jī)試題是判斷潤(rùn)年。年份要求是四位數(shù)。

        輸入樣例:

        2012

        2122

        afdsfa

        22.33

        輸出樣例:

        YES

        NO

        ERROR

        我的答案是:

        Java代碼 收藏代碼

        package cn.william;

        import java.awt.event.ActionEvent;

        import java.awt.event.ActionListener;

        import javax.swing.JFrame;

        import javax.swing.JLabel;

        import javax.swing.JTextField;

        public class Test extends JFrame{

        private JLabel lable;

        private JTextField field;

        public static void main(String[] args){

        Test frame = new Test();

        frame.init();

        }

        public void init(){

        this.setSize(400, 250);

        this.setLayout(null);

        lable = new JLabel("請(qǐng)輸入年份:");

        field = new JTextField();

        lable.setBounds(140, 90, 120, 30);

        field.setBounds(140, 120,120, 30);

        this.add(field);

        this.add(lable);

        this.setVisible(true);

        field.addActionListener(new ActionListener() {

        @Override

        public void actionPerformed(ActionEvent e) {

        String year = field.getText().toString();

        if(year.length() != 4){

        System.out.println("ERROR");

        return;

        }

        int y = 0;

        try{

        y = Integer.parseInt(year);

        }catch(Exception ex){

        System.out.println("ERROR");

        return;

        }

        check(y);

        }

        });

        }

        private void check(int year){

        if(year == 0){

        System.out.println("ERROR");

        return;

        }

        if(year % 100 == 0){

        if(year % 400 == 0){

        System.out.println("YES");

        }else{

        System.out.println("NO");

        }

        }else{

        if(year % 4 == 0){

        System.out.println("YES");

        }else{

        System.out.println("NO");

        }

        }

        }

      【2017華為筆試真題】相關(guān)文章:

      2017華為筆試真題及答案03-29

      2017記者筆試真題分享05-28

      2017事業(yè)單位筆試真題03-02

      IBM筆試真題01-21

      華為筆試經(jīng)驗(yàn)分享201703-30

      農(nóng)信社筆試真題02-08

      騰訊筆試真題精選01-16

      京東往年筆試真題01-08

      2017華為校招筆試題06-14