輸出:code
1 2 2 3 3 3 4 4 4 4 5 5 5 5 5
代碼:co
void printArr(int* arr, int n){ for(int i=1;i<n;i++){ if(arr[i]==0){ cout<<" "; }else{ cout<<arr[i]; } } cout<<endl; } int main() { int max = 5; //能夠爲10如下的數, 10以上能夠本身試一下,^-^ int len = max + max -1 ; //要存儲的數目,是奇數 int mid = len/2 + 1; //5 for(int i=1;i<=max;i++){ if(i%2==0){ //計算出位置 int *line = new int[len+1](); //多申請一個, 在[1:len] 上操做, 避免差一錯誤 for(int j=0;j<i/2;j++){ //兩邊鋪開 line[mid+1+j*2] = i; line[mid-1-j*2] = i; } printArr(line,len+1); delete[] line; }else{ //計算出位置 int *line = new int[len+1](); line[mid] = i; //先填中間 for(int j=1;j<=i/2;j++){ //兩邊鋪開 j的範圍儘可能要方便操做 line[mid+j*2] = i; line[mid-j*2] = i; } printArr(line,len+1); delete[] line; } } }