#include <iostream> using namespace std; char m[500][1500]; int x,y,dy[4]={0,1,-1,0}; void dfs(int d,int n) { while(n--) { x+=1; y+=dy[d]; m[y][x]='*'; } } int main() { int n,w,h; while(cin>>n) { w=n+n+(n-1)/2+n*2; h=n; for(int i=0;i<h;++i) { for(int j=0;j<w;++j) { m[i][j]=' '; } } x=0; y=n/2; m[y][x]='*'; dfs(0,n-1); dfs(1,(n-1)/2); dfs(2,n-1); dfs(3,2*n-1); for(int i=0;i<h;++i) { for(int j=0;j<w;++j) { cout<<m[i][j]; } cout<<endl; } } }
陣列寬度計算公式為:
(n<<2) + (n>>1) + (n&1) - 2