2010年(122)
分类: C/C++
2010-03-09 20:27:12
资源来源:http://blog.chinaunix.net/u3/105033/index.html
一、问题描述
Description
给定两个整数M,N,生成一个M*N的矩阵,矩阵中元素取值为A至Z的26个字母中的一个,A在左上角,其余各数按顺时针方向旋转前进,依次递增放置,当超过26时又从A开始填充。例如,当M=5,N=8时,矩阵中的内容如下:
A B C D E F G H
V W X Y Z A B I
U J K L M N C J
T I H G F E D K
S R Q P O N M L
Input
M为行数,N为列数,其中M,N都为大于0的整数。
Output
分行输出相应的结果
Sample Input
4 9
Sample Output
A B C D E F G H I
V W X Y Z A B C J
U J I H G F E D K
T S R Q P O N M L
A |
B |
C |
D |
E |
F |
P |
Q |
R |
S |
T |
G |
O |
X |
W |
V |
U |
H |
N |
M |
L |
K |
J |
I |
二、分析解答
按照生成顺序先将结果填充到一个二维数组里,然后按照规定格式输入二维数组。设s是M,N之中的最小者,那么要填充的圈数为r=(s+1)/2,包括最后一段(不是圈)。Fill()函数按顺时针顺序填充一个圈,因此调用r次fill()进行填充,最后输入数据内容。
三、代码
|