标签:
题目:
Description
Input
Output
Sample Input
2 3 5
Sample Output
8 1 6 3 5 7 4 9 2 17 24 1 8 15 23 5 7 14 16 4 6 13 20 22 10 12 19 21 3 11 18 25 2 9
这个题目规定死了填的方式,直接写出来就是的了。
用了一个小技巧,不需要记录区分哪些格子已经写过了,哪些没写过。
什么时候会遇到右上方已经写了数的情况,直接根据num就可以算出来
因为我对幻方做过一点研究,所以应该算是写的比较简洁的。
代码:
#include<iostream> #include<iomanip> using namespace std; int matrix[20][20]; int main() { int t, n; cin >> t; while (t--) { cin >> n; int number = 1, line = 1, column = n / 2 + 1; while (number<=n*n) { matrix[line][column] = number++; if (number%n == 1)line++; else { line = (line + n - 2) % n + 1; column = column%n + 1; } } for (int i = 1; i <= n; i++) { for (int j = 1; j <= n; j++)cout << setw(4) << matrix[i][j]; cout << endl; } } return 0; }
标签:
原文地址:http://blog.csdn.net/nameofcsdn/article/details/52279681