当前位置: 代码迷 >> 综合 >> P2615 神奇的幻方 (noip2015, 模拟)
  详细解决方案

P2615 神奇的幻方 (noip2015, 模拟)

热度:26   发布时间:2023-12-13 19:55:14.0

题目:
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 */