为什么不能从0开始填
查看原帖
为什么不能从0开始填
338374
Dolkx楼主2020/7/21 11:09
#include <bits/stdc++.h>
using namespace std;
int n[100][100], a;
int main() {
	int i = 1, j = 0, k = 1;
	cin >> a;
	while (k <= a * a)
	{
	    while (!n[i][j + 1] && j < a)
	        n[i][++j] = k++;
	    while (!n[i + 1][j] && i < a)
	        n[++i][j] = k++;
	    while (!n[i][j - 1] && j > 1)
	        n[i][--j] = k++;
	    while (!n[i - 1][j] && i > 1)
	        n[--i][j] = k++;
	}
	//为什么这样不行,k = 0 
	/*	while (k <= a * a)
	{
	    while (!n[i][j + 1] && j < a)
	        n[i][++j] = ++k;
	    while (!n[i + 1][j] && i < a)
	        n[++i][j] = ++k;
	    while (!n[i][j - 1] && j > 1)
	        n[i][--j] = ++k;
	    while (!n[i - 1][j] && i > 1)
	        n[--i][j] = ++k;
	}
	*/
	for (int i = 1; i <= a; i++) {
		for (int j = 1; j <= a; j++) {
			printf("%3d", n[i][j]);
		}
		puts("");
	}
}
2020/7/21 11:09
加载中...