华为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) 回帖