題目敘述
請實作一程式,此程式可以不斷地要求使用者輸入兩整數o(1<=o<=26)、n(n>0),直到所輸入的o或n值不在指定範圍內時結束程式。當給定一組o及n時,請輸出一(2*n-1)X(2*n-1)的同心矩形,每一層矩形符號由一個英文字母表示,最內層為以A表示的同心矩形,接下來為以B、C、D依序表示的同心矩形,直到LO (LO代表從A開始依字母順序的第O個字母,其中A為第1個字母),之後再從A開始,週而復始直到組成一(2*N-1)X(2*N-1)的同心矩形。範例如下所示。
範例輸入
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
o = 2, n = 5
AAAAAAAAA
ABBBBBBBA
ABAAAAABA
ABABBBABA
ABABABABA
ABABBBABA
ABAAAAABA
ABBBBBBBA
AAAAAAAAA
o = 5, n = 4
DDDDDDD
DCCCCCD
DCBBBCD
DCBABCD
DCBBBCD
DCCCCCD
DDDDDDD
o = 3, n = 7
AAAAAAAAAAAAA
ACCCCCCCCCCCA
ACBBBBBBBBBCA
ACBAAAAAAABCA
ACBACCCCCABCA
ACBACBBBCABCA
ACBACBABCABCA
ACBACBBBCABCA
ACBACCCCCABCA
ACBAAAAAAABCA
ACBBBBBBBBBCA
ACCCCCCCCCCCA
AAAAAAAAAAAAA
|
答題思路
略
參考答案
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
#include <iostream>
#include <algorithm>
using namespace std;
int main() {
int n ;
while(cin >> n and n > 0) {
for(int i=0; i < 2*n-1; i++) {
int idx = i;
if(i < n)
idx -= (i-n+1)*2;
for(int j=0; j < 2*n-1; j++) {
int jdx = j;
if(j < n)
jdx -= (j-n+1)*2;
printf("%d", min(idx, jdx)-n+2);
}
printf("\n");
}
}
return 0;
}
|