蛇形填充數組
查看 提交 統計 提問
總時間限制: 1000ms 記憶體限制: 65536kB
描述
用數字1,2,3,4,...,n*n這n2個數蛇形填充規模為n*n的方陣。
蛇形填充方法為:
對於每一條左下-右上的斜線,從左上到右下依次編號1,2,...,2n-1;按編號從小到大的順序,將數字從小到大填入各條斜線,其中編號為奇數的從左下向右上填寫,編號為偶數的從右上到左下填寫。
比如n=4時,方陣填充為如下形式:
1 2 6 7
3 5 8 13
4 9 12 14
10 11 15 16
輸入
輸入一個不大於10的正整數n,表示方陣的行數。
輸出
輸出該方陣,相鄰兩個元素之間用單個空格間隔。
範例輸入
4
範例輸出
1 2 6 7
3 5 8 13
4 9 12 14
10 11 15 16
#include <iostream>using namespace std;int main(){int a[10][10]={0};int n,nc=0;int f;cin>>n;int ipre,jpre;while(nc++<n*n){if(nc==1){ipre=0;jpre=0;a[ipre][jpre]=nc;continue;}if((ipre+jpre)%2==0)//'/上'{if(ipre==0&&jpre!=n-1){//djpre+=1;a[ipre][jpre]=nc;}else if(jpre==n-1){//sipre+=1;a[ipre][jpre]=nc;}else{ipre-=1;jpre+=1;a[ipre][jpre]=nc;}}/*1 2 6 73 5 8 134 9 12 1410 11 15 16*/else//'/下'{if(jpre==0&&ipre!=n-1){//sipre+=1;a[ipre][jpre]=nc;}else if(ipre==n-1){//djpre+=1;a[ipre][jpre]=nc;}else{ipre+=1;jpre-=1;a[ipre][jpre]=nc;}}}for(int i=0;i<n;i++){for(int j=0;j<n;j++){if(j==0)cout<<a[i][j];elsecout<<" "<<a[i][j];}cout<<endl;}return 0;}