#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
陣列寬度計算公式為:
(n<<2) + (n>>1) + (n&1) - 2
改了w 答案還是不對
char m[500][1500];
1500不夠大