打印蛇形矩阵

来源:互联网 发布:wine源码 编辑:程序博客网 时间:2024/05/29 17:09
<pre name="code" class="cpp"><pre name="code" class="cpp"><pre name="code" class="cpp"><pre name="code" class="cpp">/*题目说明蛇形矩阵是由1开始的自然数依次排列成的一个矩阵上三角形。 样例输入5样例输出1 3 6 10 152 5 9 144 8 137 1211*///方法1  --此方法有点烂,/*思想:一行行打印;每行打印元素的个数为下列参数:n+1-i      找出每一行的第一个元素的规律:程序中的out0参数;      确定每一行第一个递增步进值。参数add_start  比如:第一行的第一个元素到第二个元素递增2 ;                                                       第二行的第一个元素到第二个元素递增3;    */void main(){int n;while(1){      cin>>n;      getresult(n);}}void getresult(int n){int out,out0,m=0,add_start=0;for(int i=1;i<=n;i++){     //输出n行out=0;out0=0;              //计算每行的第一个数for(int k=1;k<=i;k++)  out0=out0+k-1;out0=out0+1;    //计算每行的初始步进值 第一行从2开始加,第二行从3开始加,....add_start=i+1;     //打印每行的数量和值for(m=1;m<=n+1-i;m++){//每行数量 n+1-i 个if(m==1){out=out0;cout<<out<<" ";}else if(m==2){        out=out0+add_start;        cout<<out<<" ";}        else{     out=out+add_start+m-2;     cout<<out<<" ";}}cout<<endl;}}//方法2 --先把第一行数据计算出来,其他数据等于右上角数据减一;// 第一行数据的第n个元素值=1+2+3+...+n#define MAX 100 void main(){int n;while(1){cin>>n;    getresult(n);}}void getresult(int n){    int out=0;int a[MAX][MAX]={0};//打印第一行数据for(int i=1;i<=n;i++){  out+=i;  a[0][i-1]=out;  cout<<out<<" ";}cout<<endl;//其余行数据for(int i=2;i<=n;i++){for(int j=0;j<n-i+1;j++){   a[i-1][j]=a[i-2][j+1]-1;//右上角数据减一;cout<<a[i-1][j]<<" ";}cout<<endl;}}  //时间复杂度:n+n*(n/2)


                                             
0 0
原创粉丝点击