洛谷P 5731【深基5.習6】蛇形方陣(C++版)

9803 ワード

原題転送ドア:
https://www.luogu.com.cn/problem/P5731
タイトルの説明
9以下の正の整数nを与え、nを出力する.×nの蛇形方陣.
左上隅に1を記入してから、サンプルのように時計回りに順番に数字を記入します.注意各数字には3文字が使用され、前にスペースを使用して整列します.
入力形式なし
出力フォーマットなし
入出力サンプル
4

しゅつりょく
  1  2  3  4
 12 13 14  5
 11 16 15  6
 10  9  8  7

コード(この書き方は煩雑です):
#include
#include
using namespace std;
int a[9][9] = {
      0 };
int main() {
     
	int n;
	cin >> n;
	int count = 0;//      
	int i = 0, j = 0;
	count++;
	a[i][j] = count;
	int m = n;//      、    
	while (count < n * n)
	{
     
		//  
		j++;
		while (j < m)
		{
     
			count++;
			a[i][j++] = count;
		}
		j--;
		//  
		i++;
		while (i < m)
		{
     
			count++;
			a[i++][j] = count;
		}
		i--;
		//  
		j--;
		while (j > n - m - 1)
		{
     
			count++;
			a[i][j--] = count;
		}
		j++;
		//  
		i--;
		while (i > n - m)
		{
     
			count++;
			a[i--][j] = count;
		}
		i++;
		m--;
	}
	for (int k = 0; k < n; k++)
	{
     
		for (int l = 0; l < n; l++)
		{
     
			/*printf("%3d", a[k][l]);*/
			if (a[k][l] < 10)
			{
     
				cout << "  " << a[k][l];
			}
			else
			{
     
				cout << " " << a[k][l];
			}
		}
		cout << endl;
	}
	return 0;
}

いかなる形式の転載を歓迎しますが、必ず出典を明記してください.
本人のレベルに限り、文章やコードに不適切な点があれば、教えてください.