基础训练 回形取数
Posted a-little-nut
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基础训练 回形取数相关的知识,希望对你有一定的参考价值。
/*逆时针读数,但每读过一个就标志已读*/
#include<iostream>
#include<vector>
using namespace std;
int main(){
int m, n, cnt=1, x=0, y=0, flag=0;
cin>>m>>n;
vector<vector<int> > M(m, vector<int>(n, 0)), visited(m, vector<int>(n,0));
for(int i=0; i<m; i++)
for(int j=0; j<n; j++)
cin>>M[i][j];
cout<<M[0][0]; visited[0][0]=1;
while(cnt<m*n){
while(x+1<m&&!visited[x+1][y]){
visited[++x][y]=1; cnt++;
cout<<" "<<M[x][y];
}
while(y+1<n&&!visited[x][y+1]){
visited[x][++y]=1; cnt++;
cout<<" "<<M[x][y];
}
while(x-1>=0&&!visited[x-1][y]){
visited[--x][y]=1; cnt++;
cout<<" "<<M[x][y];
}
while(y-1>=0&&!visited[x][y-1]){
visited[x][--y]=1; cnt++;
cout<<" "<<M[x][y];
}
}
cout<<endl;
return 0;
}
以上是关于基础训练 回形取数的主要内容,如果未能解决你的问题,请参考以下文章