求一段排列代码
有一个100个元素的一维数组,由单个字母随机组成,如:A A A A A A A A A A B B B B B C C C C C C C C C C C C C D D D D D D D D E E E E E E E E E E E F F F F F F F G G G G G G G G H H H H H H H H H H H I I I I I I I I I I I I I I I I I I I J J J J J J J J仅是示例,实际中字母A、B等的个数是随机的,也许只有两个A没有B。字母的种类也是随机的,也许还有R、S、T或X、Y、Z。
现需要将他们按30个元素一组分组,并将每组写入五列六行的矩阵,如这样的一个:
A G H C G
B E A D A
C G C G B
B H E A C
A F B G B
B C A F A
要求是:
为便于叙述,先将这个矩阵的每个位置进行如下编号:
1 7 13 19 25
2 8 14 20 26
3 9 15 21 27
4 10 16 22 28
5 11 17 23 29
6 12 18 24 30
一、相邻元素不能相同,相邻是指:如与1号相邻的有2、7、8,如与4号相邻的有3、5、9、10、11,如与15号相邻的有8、9、10、14、16、20、21、22,如与29号相邻的有22、23、24、28、30,等等
二、当不足30个元素时,优先填编号小的,空编号大的
求各位赐教一段代码,代码的结果可以只生成另一个排列好的一维数组,我拿来可以依次写入矩阵即可。谢谢!