二維陣列鐘擺式輸出

weixin_34075268發表於2017-03-16

無整理 不簡書

例題:二維陣列第一行是小寫字母,第二行是大寫字母,鐘擺式輸出(AaCcEe...WwYyZzXxVv....DdBb)
本題只要做兩件事,第一件事是儲存,第二件事是輸出,把儲存和輸出放到同一迴圈中,輸出的字母一定要在陣列中存在,在這裡我把儲存和輸出同步:一共26個字母也就是迴圈26次,每次迴圈儲存並輸出一個相同字母,陣列是按照正常的AaBbCcDd順序儲存並且儲存和輸出的順序符合鐘擺式。

//二維陣列第一行是小寫字母,第二行是大寫字母,擺鐘式輸出
    char[][] n = new char[2][26];
    for(int i = 0; i < 26; i++)
    {
        if(i < 13)
        {//0 a  2 c  4   e   12 y
            n[0][2 * i] = (char)(2 * i + 65);
            n[1][2 * i] = (char)(2 * i + 97);
            System.out.print(n[0][2 * i]);
            System.out.print(n[1][2 * i]);
        }
        else
        {//25 z 23 x  ...                   //13 -  25   14  -  23  15 - 21
            n[0][51 - 2 * i] = (char)(51 - 2 * i + 65);
            n[1][51 - 2 * i] = (char)(51 - 2 * i + 97);
            System.out.print(n[0][51 - 2 * i]);
            System.out.print(n[1][51 - 2 * i]);
        }
    }

前13個儲存字母順序(二維陣列的下標)
0,2,4,6,...,24 (2 i)
前13個輸出字母順序(鐘擺的前13項)
Aa,Cc,Ee,...,Yy(2 i + 65 /2 i + 97)
0 - Aa,2 - Cc,4 - Ee,...,12 - Yy

後13個儲存字母順序(二維陣列的下標)
25,23,21,19,...,1 (51 - 2 i)
後13個輸出字母順序(鐘擺的後13項)
Zz,Xx,Vv,...,Bb (51 - 2 i + 65/51 - 2 i + 97)
25 - Zz,23 - Xx,21 - Vv,...,1 - Bb

關於2 i 和51 - 2 i是如何計算出來的,參考如下:
0 2 4 6 ...很容易看出是偶數 用 i (0,1,2,3...)的通式表示就是2 i
25 23 21 19...與 i (13,14,15,16...) 的對應關係,很容易看出 i 每增加 1 下標下降 2 ,所以 i 與下標成線性關係,斜率是 -2 ,帶入數值計算出 下標 = 51 - 2 i

如有錯誤之處,請指正。如有更好的方法,歡迎討論。

相關文章