顺时针打印矩阵
有趣的打印矩阵,依照此模板进行扩展
#include<iostream>
#include<stdio.h>
using namespace std;
#define N 1005
int dp[N][N];
int main()
{
//四个方向移动
int dx[]={-1,0,1,0},dy[] = {0,1,0,-1};
int m,n;
cin>>m>>n;
//d=1是向右边移动
int x=0,y=0,d=1;
for(int i=1;i<=m*n;i++)
{
dp[x][y]=i;
int a = x+dx[d];
int b = y+dy[d];
//超过界限,转换方向
if(a<0||a>=m||b<0||b>=n||dp[a][b])
{
//四个方向,d最大为3所以%4
d = (d+1)%4;
a = x+dx[d];
b = y+dy[d];
}
x =a;
y =b;
}
for(int i=0;i<m;i++)
{
for(int j = 0;j<n;j++)
{
printf("%7d",dp[i][j]);
}
cout<<endl;
}
}
之前一次笔试题遇到,顺时针把字母放入矩阵,从a开始超过z再变a,与此类似