#25043: 一維陣列解法


a810594@gm.tnfsh.tn.edu.tw (076)

學校 : 國立臺南第一高級中學
編號 : 146476
來源 : [112.78.88.105]
最後登入時間 :
2021-08-21 19:08:32
c292. APCS2017-0304-3數字龍捲風 -- 2017年3月APCS | From: [59.127.217.171] | 發表日期 : 2021-04-16 22:05

真心建議不要這麼做,這是我浪費數小時的結果

https://lin76.blogspot.com/2021/04/blog-post.html

 
#25584: Re:一維陣列解法


vic20050418@gmail.com (Wen Vic)

學校 : 國立臺灣科技大學
編號 : 153262
來源 : [114.136.159.95]
最後登入時間 :
2023-07-29 13:10:41
c292. APCS2017-0304-3數字龍捲風 -- 2017年3月APCS | From: [114.136.159.185] | 發表日期 : 2021-06-04 13:18

如果是一維陣列解法
勢必要找出其規則和吃數學能力

但是肯定比二維快也短

AC (3ms, 364KB)

程式碼行數:33

以下是程式碼

.

.

.

.

.

.

.

.

.

.

.

.

.

.

..

.

..

.

..

..

.

.

.

.

.

.

.

.

.

.

.

.

.

 

#include <iostream>

using namespace std;

int main()

{

    ios_base::sync_with_stdio(false); cin.tie(0);

    int n[2510]= { 0 };

    int x, z, count=1, change=2;

    cin >> x >> z;

    for (int i = 1; i <= x*x; i++) cin >> n[i];

    int current = x * (x / 2) + (x / 2) + 1;

    cout << n[current];

    int direct[4] = { -1 , -x , 1 , x };

    for (int j = (x + x) - 2; j > 0; j--) {

        for (int i = count; i > 0; i--) {

            if (z == 0) current += direct[0];

            else if (z == 1) current += direct[1];

            else if (z == 2) current += direct[2];

            else current += direct[3];

            cout << n[current];

        }

        z++;

        if (z > 3) z = 0;

        change--;

        if (change == 0) {

            count++;

            change = 2;

        }

    }

    for (int k = count - 1; k > 0; k--) {

        current += direct[z];

        cout << n[current];

    }

 

}

 

 
ZeroJudge Forum