题目:
noip 简单模拟题
题目给出的四个步骤,用 if 和 else 处理一下即可
#include <cstdio>
#include <cstring>
#include <iostream>
using namespace std;const int MaxN = 40;
int n;
int a[MaxN][MaxN];int main()
{
memset(a, 0, sizeof(a));scanf("%d", &n);int x = 1, y = n / 2 + 1;a[x][y] = 1;for(int i = 2; i <= n * n; ++i){
if(x == 1 && y == n) //第一行, 最后一列{
++x;}else if(x == 1 && y != n){
// 第一行, 但不是最后一列x = n;++y;}else if(x != 1 && y == n){
// 最后一列,但不是第一行--x;y = 1;}else{
if(0 == a[x - 1][y + 1]) // 斜右上方没有{
--x, ++y;}else{
++x;}}a[x][y] = i;}for(int i = 1; i <= n; ++i){
for(int j = 1; j <= n; ++j){
printf("%d", a[i][j]);if(j < n){
printf(" ");}}printf("\n");}return 0;
}/* 3 *//* 8 1 6 3 5 7 4 9 2 */