【PAT】B1050 螺旋矩阵(25 分)


实在不觉得递归等方式有什么简单的地方,没错我就是用的最笨的方法模拟。
和我一样的小白看代码应该很容易理解。

#include
#include
#include
using namespace std;
int N;
int main(){
    int m,n;scanf("%d",&N);
    int temp=sqrt(N),arr[N];
	for(int i=0;i=0;i--){//求出hang数》lie数
        if(N%i==0){
            n=i;m=N/i;
            break;
        }
    }
	N--;
    int put[m][n],left=0,right=n-1,up=0,down=m-1;
    while(N>=0){
        for(int i=left;i<=right;i++)
			put[up][i]=arr[N--];
		if(left<=right)up++;
		if(N<0) break;
		for(int i=up;i<=down;i++)
			put[i][right]=arr[N--];
		if(N<0) break;
		if(up<=down)right--;
		for(int i=right;i>=left;i--)
			put[down][i]=arr[N--];
		if(N<0) break;
		if(right>=left)down--;
		for(int i=down;i>=up;i--)
			put[i][left]=arr[N--];
		if(N<0) break;
		if(down>=up)left++;
    }
    for(int i=0;i