藍橋杯-回形巢狀
回形巢狀
***********
* *
* ******* *
* * * *
* * *** * *
* * * * * *
* * *** * *
* * * *
* ******* *
* *
***********
觀察這個圖形,它是由一系列正方形的星號方框巢狀而成。
在上邊的例子中,最外方框的邊長為11。
本題的任務就是從標準輸入獲得一個整數n(1<n<100)
程式則生成巢狀著的回字型星號方框。其最外層方框的邊長為n
例如:
輸入:
5
程式輸出:
*****
* *
* * *
* *
*****
輸入:6
程式輸出:
******
* *
* ** *
* ** *
* *
******
解題思路:
用一個n*n的二維陣列儲存圖形,從最外層到內層二重迴圈新增*號。
每次迴圈以每層回形的左上角一點為起始座標,分別向行和列補充*號;
起始點座標的規律特點是從(0,0),(2,2),(4,4)一直到(limit,limit)。
其中limit一定是一個偶數,計算方式為:不大於n/2的最大偶數(詳見程式碼)。
#include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
using namespace std;
char a[100][100];
int r=0,c=0;//行、列
void output(int n)//輸出圖形
{
for(int i=0; i<n; ++i)
{
for(int j=0; j<n; ++j)
cout<<a[i][j];
cout<<endl;
}
cout<<endl;
}
int main()
{
int n;
cin>>n;
memset(a,' ',sizeof(a));//清空陣列
int limit=n/2;//座標最大值
if(limit%2!=0)//偶數
--limit;
for(int j=0; j<=limit; j+=2)
{
for(int i=j; i<n-j; ++i)
{
a[j][i]=a[n-1-j][i]='*';//行
a[i][j]=a[i][n-1-j]='*';//列
}
//output(n);//輸出便於檢視從最外層到內層的變化情況
}
output(n);
return 0;
}
/*
5
6
*/
相關文章
- 藍橋杯 排序排序
- 藍橋杯-N皇后
- 藍橋杯真題
- 藍橋杯年號字串字串
- 藍橋杯-帶分數
- 藍橋杯-翻硬幣
- 藍橋杯-螞蟻感冒
- 藍橋杯 計算方程
- 藍橋杯-座次問題
- 藍橋杯-長草(BFS)
- 藍橋杯-日期問題
- 藍橋杯-班級活動
- 藍橋杯——查詢的妙趣
- 密碼脫落——藍橋杯密碼
- 藍橋杯-串的處理
- 藍橋杯-分巧克力
- 藍橋杯-k倍區間
- 藍橋杯學習路線
- 藍橋杯javaB組備賽Java
- 太陽(藍橋杯14屆)
- 藍橋杯-走迷宮(BFS)
- 藍橋杯-地宮取寶
- 藍橋杯-波動數列
- 藍橋杯-日誌統計
- 藍橋杯-合併數列
- 藍橋杯-矩陣翻硬幣矩陣
- 藍橋杯—演算法訓練演算法
- 藍橋杯--演算法訓練演算法
- 藍橋杯大賽——驅動程式
- 藍橋杯 分巧克力(Java)Java
- 藍橋杯-買不到的數目
- 藍橋杯4-R格式-2
- 藍橋杯-axf檔案生成01
- 藍橋杯模板(三)python組Python
- 藍橋杯模板(二)python組Python
- 藍橋杯,推導部分和
- 藍橋杯例題-快速分揀
- 藍橋杯-迷宮(BFS+DFS)