螺旋矩阵和蛇形矩阵

来源:互联网 发布:老炮儿网络剧全集 编辑:程序博客网 时间:2024/06/03 21:05
<pre name="code" class="cpp">//螺旋矩阵
#include <iostream>using namespace std;/*请输入2维矩阵的行数n:41       2       3       412      13      14      511      16      15      610      9       8       7*/int main(){    int n;    cout<<"请输入2维矩阵的行数n:";    cin>>n;    int a[n][n]={0};    int x=0,y=0;    int num=1;//从1开始的矩阵    int c=0;//记录螺旋数    while(num<=n*n){        x=0;y=0;//每轮螺旋完毕重新初始化x,y        for(x+=c,y+=c;y<n-c;y++)//从左向右        {            if(num>n*n)                break;            a[x][y] = num++;        }        for(y--,x=x+1;x<n-c;x++){//从上到下            if(num>n*n)                break;            a[x][y] = num++;        }        for(x--,y=y-1;y>=c;y--){//从右向左             if(num>n*n)                break;            a[x][y] = num++;        }        for(y++,x=x-1;x>c;x--){//从下到上             if(num>n*n)                break;            a[x][y] = num++;        }        c++;//一次螺旋结束,螺旋数++    }    //打印矩阵    for(int i=0;i<n;i++){        for(int j=0;j<n;j++){            cout<<a[i][j]<<"\t";        }        cout<<endl;    }    return 0;}


//蛇形矩阵

<pre name="code" class="cpp">#include <iostream>#include <string>using namespace std;/*请输入二维方阵的行列数目:41       3       4       102       5       9       116       8       12      157       13      14      16*/int main(){    int n;    cout<<"请输入二维方阵的行列数目:";    cin>>n;    int a[n][n] = {0};    int k =1,i=0,j=0;    for(int i=0;i<n;i++){//上三角矩阵+对角线        if(i%2==0)        {            for(int j=0;j<=i;j++)                a[j][i-j]=k++;        }        else{            for(int j=i;j>=0;j--)                a[j][i-j]=k++;        }    }    for(int i=1;i<n;i++){//下三角矩阵        for(int j=n-1;j>=n-i;j--)            a[i][j]=n*n+1-a[n-i-1][n-j-1];    }    for(int i=0;i<n;i++){        for(int j=0;j<n;j++){            cout<<a[i][j]<<"\t";        }        cout<<endl;    }    return 0;}



0 0