2045:【例5.13】蛇形填数

#include <iostream>
using namespace std;
int main(){
	int n;
	cin>>n;
	int b=1,i=0,j=n-1,a[n][n];
	for(int i=0;i<n;i++){
		for(int j=0;j<n;j++){
			a[i][j]=0;
		}
	}
	a[i][j]=1;
	while(b<n*n){
		while(a[i+1][j]==0&&i+1<n){
			a[i+1][j]=++b;
			i++;
		}
		while(a[i][j+1]==0&&j+1<n){
			a[i][j+1]=++b;
			j++;
		}
		while(a[i][j-1]==0&&j-1>=0){
			a[i][j-1]=++b;
			j--;
		}
		while(a[i-1][j]==0&&i-1>=0){
			a[i-1][j]=++b;
			i--;
		}
	}

	for(int i=0;i<n;i++){
		for(int j=0;j<n;j++){
			cout<<a[i][j]<<" ";
		}
		cout<<endl;
	}
	return 0;
}

  

posted @ 2024-02-19 15:25  最后一个还有我  阅读(82)  评论(0)    收藏  举报