2020华为春季校招机试题

Psyche ·
更新时间:2024-09-21
· 979 次阅读

本来想用java,但是第一题确实挺简单的就用c++了,之后也不想换了,接着用c++

1.方阵顺时针旋转

#include

using namespace std;

//之前练华为题的时候经常超时,所以这次把特殊情况单列出来,少几个循环

//但结果是代码冗长,如果真的参加工作了,不建议大家把代码写的这么墨迹

int main(){

    int n;

    cin>>n;

    if(n==1){

        int temp;

        cin>>temp;

        cin>>n;

        cout<<temp;

        return 0;

    }//特殊情况

    

    int a[11][11]={0};//行数  列数

    for(int i=1;i<=n;i++){

        for(int j=1;j<=n;j++){

            cin>>a[i][j];

        }

    }

    int m;

    cin>>m;

    m=m%4;//少转几圈

    if(m==0){

        for(int i=1;i<=n;i++){

            for(int j=1;j<=n;j++){

                cout<<a[i][j];

                if(j!=n){

                    cout<<" ";

                }

            }

        cout<<endl;

        return 0;

        }//特殊情况

    }

    int b[11][11]={0};

    for(int k=0;k<m;k++){

        

        for(int i=1;i<=n;i++){

            for(int j=1;j<=n;j++){

                b[i][j]=a[n-j+1][i];

            }

        }

        for(int i=1;i<=n;i++){

            for(int j=1;j<=n;j++){

                a[i][j]=b[i][j];

            }

        }//旋转再复位

        

    }

    for(int i=1;i<=n;i++){

        for(int j=1;j<=n;j++){

            cout<<b[i][j];

            if(j!=n){

                cout<<" ";

            }

        }

        cout<<endl;

    }

    return 0;

}

2.n个礼物 m个小朋友分礼物.有多少情况,并画出来

#include

#include

using namespace std;

void dfs(int index,int n,int k,int a,string path,vector&res){

        if(index==a){

            res.push_back(path);

            return ;

        }

        if(n>0){//递归自己,列出情况

            dfs(index+1,n-1,k,a,path+"*",res);

        }

        if(k>0){

            dfs(index+1,n,k-1,a,path+"|",res);

        }

    }

int main(){

    int n,k;

    cin>>n>>k;

    int total=0;

    vector res;

    int a=n+k-1;

    dfs(0,n,k-1,a,"",res);

    cout<<res.size()<<endl;

    for(int i=0;i<res.size();i++){

        cout<<res[i]<<endl;

    }

    return 0;

}

3.给两个字符串a,b,问用最少用几步操作能将a改成b(操作:增加,删除,更改字符)

这个我不会,看样子应该是dp问题,如果有大佬能给个代码或思路来交流学习,不胜感激


作者:希望能读博



校招 华为

需要 登录 后方可回复, 如果你还没有账号请 注册新账号
相关文章