思路分析:找规律,从外到内一圈一圈的改变数组内的元素。
数组定义大小:观察规律发现:行列都是5+4*n;题目中n范围小于30;当n为30时,行列空间为125,所以定义map[130][130]足够了。
#include <bits/stdc++.h>
using namespace std;
int main(){
char map[130][130]; //题目范围<30 ,最多125*125的地图
int n;
cin >> n;
int m = 5 + 4* n; //使用到的地图大小
for (int i = 1; i <= m; ++i){
for (int j = 1; j <= i; ++j){
map[i][j] = '.';
map[j][i] = '.';
}
}
for (int quan = 1; quan <= n + 1; ++quan){
for (int i = quan * 2 + 1; i <= m - 2 * quan; ++i){
for (int j = 2 * (quan - 1) + 1; j <= m - 2 * quan + 2; ++j){
map[i][j] = '$';
map[j][i] = '$';
}
}
for (int i = quan * 2 + 2; i <= m - 2 * quan - 1; ++i){
for (int j = 2 * (quan - 1) + 2; j <= m - 2 * quan + 1; ++j){
map[i][j] = '.';
map[j][i] = '.';
}
}
}
for (int i = 1; i <= m; ++i){
for (int j = 1; j <= m; ++j){
cout << map[i][j];
}
cout << endl;
}
return 0;
}
运行过程: