首页 > 华为笔试-题目一
头像
apieceofcake
编辑于 2020-08-19 21:37
+ 关注

华为笔试-题目一

华为8-19笔试:ac最简单的一题😭,后面的题通过率都只有10%,最后一题题目意思还理解错误,到最后才发现!😭😭😭(我眼瞎,没办法!!!!)
第一题:螺旋矩阵遍历,使用哨兵标志行列左右边界,顺时针遍历,边界不断往内部缩小
#include<iostream>
#include<vector>
using namespace std;
int main(){
    int M,N;
        cin>>M>>N;
        int r1=0,r2=M-1,c1=0,c2=N-1;

        vector<pair<int,int>> nums;
        if(M<10||M>1000||N<10||N>1000){
            cout<<"[]"<<endl;
        }
        else{
            int count=0;
            while(r1<=r2&&c1<=c2){
                for(int i=c1;i<=c2;++i){
                    count++;
                    if((count%10)==7&&(count/10)%2==1){
                        nums.push_back({r1,i});
                    }
                }
                for(int j=r1+1;j<=r2;++j){
                    count++;
                    if((count%10)==7&&(count/10)%2==1){
                        nums.push_back({j,c2});
                    }
                }
                if(r1<r2&&c1<c2){
                    for(int i=c2-1;i>=c1;--i){
                        count++;
                        if((count%10)==7&&(count/10)%2==1){
                        nums.push_back({r2,i});
                    }
                    }
                    for(int j=r2-1;j>r1;--j){
                        count++;
                        if((count%10)==7&&(count/10)%2==1){
                        nums.push_back({j,c1});
                    }
                    }
                }
                r1++;r2--;c1++;c2--;
            }
            cout<<'[';
            for(size_t i=0;i<nums.size();++i){
                cout<<'['<<nums[i].first<<','<<nums[i].second<<']';
                if(i!=nums.size()-1){
                    cout<<',';
                }
            }
            cout<<']'<<endl;

        }
    return 0;
}
        



全部评论

(2) 回帖
加载中...
话题 回帖

推荐话题

相关热帖

历年真题 真题热练榜 24小时
技术(软件)/信息技术类
查看全部

近期精华帖

热门推荐