2015 NOIP day1 t1 神奇的幻方 模擬


神奇的幻方

Time Limit: 20 Sec

Memory Limit: 256 MB

題目連接

http://www.luogu.org/problem/show?pid=2615

Description

幻方是一種很神奇的N*N矩陣:它由數字1,2,3,……,N*N構成,且每行、每列及兩條對角線上的數字之和都相同。
  當N為奇數時,我們可以通過以下方法構建一個幻方:
  首先將1寫在第一行的中間。
  之后,按如下方式從小到大依次填寫每個數K(K=2,3,…,N*N):
  1.若(K−1)在第一行但不在最后一列,則將K填在最后一行,(K−1)所在列的右一列;
  2.若(K−1)在最后一列但不在第一行,則將K填在第一列,(K−1)所在行的上一行;
  3.若(K−1)在第一行最后一列,則將K填在(K−1)的正下方;
  4.若(K−1)既不在第一行,也不在最后一列,如果(K−1)的右上方還未填數,則將K填在(K−1)的右上方,否則將K填在(K−1)的正下方。
  現給定N請按上述方法構造N*N的幻方。

Under two situations the player could score one point.

⋅1. If you touch a buoy before your opponent, you will get one point. For example if your opponent touch the buoy #2 before you after start, he will score one point. So when you touch the buoy #2, you won't get any point. Meanwhile, you cannot touch buoy #3 or any other buoys before touching the buoy #2.

⋅2. Ignoring the buoys and relying on dogfighting to get point. If you and your opponent meet in the same position, you can try to fight with your opponent to score one point. For the proposal of game balance, two players are not allowed to fight before buoy #2 is touched by anybody.

There are three types of players.

Speeder: As a player specializing in high speed movement, he/she tries to avoid dogfighting while attempting to gain points by touching buoys.
Fighter: As a player specializing in dogfighting, he/she always tries to fight with the opponent to score points. Since a fighter is slower than a speeder, it's difficult for him/her to score points by touching buoys when the opponent is a speeder.
All-Rounder: A balanced player between Fighter and Speeder.

There will be a training match between Asuka (All-Rounder) and Shion (Speeder).
Since the match is only a training match, the rules are simplified: the game will end after the buoy #1 is touched by anybody. Shion is a speed lover, and his strategy is very simple: touch buoy #2,#3,#4,#1 along the shortest path.

Asuka is good at dogfighting, so she will always score one point by dogfighting with Shion, and the opponent will be stunned for T seconds after dogfighting. Since Asuka is slower than Shion, she decides to fight with Shion for only one time during the match. It is also assumed that if Asuka and Shion touch the buoy in the same time, the point will be given to Asuka and Asuka could also fight with Shion at the buoy. We assume that in such scenario, the dogfighting must happen after the buoy is touched by Asuka or Shion.

The speed of Asuka is V1 m/s. The speed of Shion is V2 m/s. Is there any possibility for Asuka to win the match (to have higher score)?

Input

輸入文件只有一行,包含一個整數N即幻方的大小。

 

Output

輸出文件包含N行,每行N個整數,即按上述方法構造出的N*N的幻方。相鄰兩個整數之間用單個空格隔開。

 

Sample Input

3

 

Sample Output

8 1 6
3 5 7
4 9 2

HINT

 

題意

 

題解:

模擬題模擬題,熱情的100分

代碼

 

#include<iostream>
#include<stdio.h>
#include<math.h>
using namespace std;

int n,x,y;
int mp[200][200];
int main()
{
    scanf("%d",&n);
    x = 1,y = (n+1)/2;
    mp[x][y]=1;
    for(int i=2;i<=n*n;i++)
    {
        if(x==1&&y!=n)
            x=n,y++;
        else if(x!=1&&y==n)
            x--,y=1;
        else if(x==1&&y==n)
            x++;
        else if(!mp[x-1][y+1])
            x--,y++;
        else
            x++;
        mp[x][y]=i;
    }
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=n;j++)
            printf("%d ",mp[i][j]);
        printf("\n");
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM