#38380: 想問錯在哪裡?


buanyz03 (張晁瑋)

學校 : 新北市立板橋高級中學
編號 : 2629
來源 : [114.25.190.198]
最後登入時間 :
2023-09-06 15:43:50

#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)

學校 : 新北市立新莊高級中學
編號 : 195452
來源 : [140.114.123.98]
最後登入時間 :
2025-09-24 19:10:46

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

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


buanyz03 (張晁瑋)

學校 : 新北市立板橋高級中學
編號 : 2629
來源 : [114.25.190.198]
最後登入時間 :
2023-09-06 15:43:50

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


改了w 答案還是不對

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


cges30901 (cges30901)

學校 : 不指定學校
編號 : 30877
來源 : [39.12.66.21]
最後登入時間 :
2025-04-20 17:19:22

char m[500][1500];


1500不夠大