#38380: 想問錯在哪裡?


buanyz03 (張晁瑋)


#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;
       }
   }
}
#38387: Re: 想問錯在哪裡?


liaoweichen1024@gmail.com (M_SQRT)


陣列寬度計算公式為:
(n<<2) + (n>>1) + (n&1) - 2

#38409: Re: 想問錯在哪裡?


buanyz03 (張晁瑋)


陣列寬度計算公式為:
(n<<2) + (n>>1) + (n&1) - 2


改了w 答案還是不對

#38518: Re: 想問錯在哪裡?


cges30901 (cges30901)


char m[500][1500];


1500不夠大