1. 程式人生 > >[Tyvj Jan]青蛙跳荷葉

[Tyvj Jan]青蛙跳荷葉

print space 簡單 mark 打表 之間 reg 一行 int

題目限制

時間限制 內存限制 評測方式 題目來源
1000ms 131072KiB 標準比較器 Local

題目描述

從前,有一個小青蛙決定去荷葉上練習跳躍.
現在有n個荷葉排成一排,小青蛙一開始在最左邊的荷葉(一號荷葉)上,當然,這個青蛙是很牛X的,可以在任意兩個荷葉之間跳躍。
有一天這個青蛙突發奇想,想用一種奇怪的方式完成跳躍練習:
1.它希望每次跳到不同的荷葉上
2.每一次跳的距離不同
當然,作出這個決定是何其的簡單,但是跳躍方式是何其的困難……,所以他希望你可以幫他解決這個問題.

下面給出這個問題嚴格的數學定義
請給出1到n這n個自然數的一個排列a1,a2,a3……an

使得
1:a1=1
2:對於任意的i<>j(1<=i,j<=n-1),有|ai-a(i+1)|<>|aj-a(j+1)|
其中n是給定的

輸入格式

一行,一個數n

輸出格式

一行,n個數,用一個空格隔開,末尾沒有多余空格

提示

數據範圍:
對於20%的數據,1<n<=4
對於100%的數據,1<n<=10000西部314 TYVJ首屆月賽 第一道

樣例數據

輸入樣例 #1輸出樣例 #1
3

1 3 2


打表出規律...普及水題


#include <iostream>
#include <cstdio>
using namespace std;
int n;
int a;
bool vis[10005];
int main()
{
    scanf("%d", &n);
    a = 1;
    printf("%d ", a);
    for (register int i = 2 ; i <= n ; i ++)
    {    
        if (i % 2 == 0)
            a = a + (n - i + 1
); else a = a - (n - i + 1); printf("%d ", a); } return 0; }

[Tyvj Jan]青蛙跳荷葉