无整理 不简书
例题:二维数组第一行是小写字母,第二行是大写字母,钟摆式输出(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
如有错误之处,请指正。如有更好的方法,欢迎讨论。
网友评论