欢迎来到天天文库
浏览记录
ID:34496831
大小:72.50 KB
页数:11页
时间:2019-03-07
《衡阳师范学院2011计算机编程大赛08级1班邓建华》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、衡阳师范学院2011年计算机科学与技术编程大赛08级1班邓建华经典矩形问题生成各种矩阵是竞赛时经常考的一种题目,如何用C语言或C++生成以下形式几种矩阵:第一种矩阵:12910438115671216151413第二种矩阵:(蛇形)12673581349121410111516第三种矩阵:12341213145111615610987第四种矩阵:76516814159231410111213规律提示:1.1->29->104<-38115->6->71216<-15<-14<-132.每个左上三角的数都是连续的3.一个回旋阵,
2、从外到里是连续的。4.同样是回旋,从里到外是连续的。第一种矩阵算法:#include#includevoidmain(){constintN=20;//最大矩阵维数inti=0,j=0,a[N][N];//i,j分别用于循环行和列,a数组保存数字intlap=1,m=1,n;//lap用于填充矩阵循环.m用于填充矩阵。n为输入的矩阵维数值//以下用于输入矩阵的维数while(1){cout<<"inputmatrixrowN(N>=2):";cin>>n;cout<3、if(n>=2)break;}a[i][j]=m++;lap++;while(lap<=n)//将1作为一围,2/3/4作为二围,5/6/7/8/9/10作为三围,依次类推。{if(lap%2==0)//偶数围的填充{for(j++;i=0;j--)//这里填充偶数围的向左数字a[i][j]=m++;j++;}else//奇数围的填充{for(i++;j4、for(i--;i>=0;i--)//这里填充奇数围的向上数字a[i][j]=m++;i++;}lap++;}//以下为输出for(i=0;i#includevoidmain(){constintMAXLEN=10;intnLen;//输入的矩阵维数int5、nSnake[MAXLEN][MAXLEN];do//用于输入矩阵的维数{cout<<"inputanintegerlessthen"<>nLen;cout<MAXLEN);inti=0,j=0,s=1,nNum=1;//s标记升降方向,斜向上为升(s==1),斜向下为降(s==-1)while(1){if(s==1)//s标记升降方向,斜向上{nSnake[i][j]=nNum;if(i-1<0)//到了矩阵第一行斜向上最后一个{if(j+1==nLe6、n)//到最后一列i++;else//没有最后一列j++;s=-1;}elseif(j+1==nLen)//到了矩阵右下半部分的右上角最后一个{i++;s=-1;}else//寻找右上角位置{i--;j++;}}else//s标记升降方向,斜向下{nSnake[i][j]=nNum;if(j-1<0)//到了矩阵第一列{if(i+1==nLen)//矩阵最后一行j++;else//矩阵第一列i++;s=1;}elseif(i+1==nLen)//矩阵非第一列且最后一行{j++;s=1;}else//左下角位置{i++;j--;7、}}nNum++;if(nNum>nLen*nLen)//填充完后退出break;}for(i=0;i#includevoidmain(){constintN=20;inti=0,j=0,a[N][N],n;intm=1,8、x1,x2,y1,y2,s=1;//x1,x2,y1,y2为上、下、左、右边界//s标记数组元素升降,s==1为升,s==-1为降while(1)//输入矩阵维数{cout<<"inputmatrixrowN(N>=2):";cin>>n;cout<
3、if(n>=2)break;}a[i][j]=m++;lap++;while(lap<=n)//将1作为一围,2/3/4作为二围,5/6/7/8/9/10作为三围,依次类推。{if(lap%2==0)//偶数围的填充{for(j++;i=0;j--)//这里填充偶数围的向左数字a[i][j]=m++;j++;}else//奇数围的填充{for(i++;j4、for(i--;i>=0;i--)//这里填充奇数围的向上数字a[i][j]=m++;i++;}lap++;}//以下为输出for(i=0;i#includevoidmain(){constintMAXLEN=10;intnLen;//输入的矩阵维数int5、nSnake[MAXLEN][MAXLEN];do//用于输入矩阵的维数{cout<<"inputanintegerlessthen"<>nLen;cout<MAXLEN);inti=0,j=0,s=1,nNum=1;//s标记升降方向,斜向上为升(s==1),斜向下为降(s==-1)while(1){if(s==1)//s标记升降方向,斜向上{nSnake[i][j]=nNum;if(i-1<0)//到了矩阵第一行斜向上最后一个{if(j+1==nLe6、n)//到最后一列i++;else//没有最后一列j++;s=-1;}elseif(j+1==nLen)//到了矩阵右下半部分的右上角最后一个{i++;s=-1;}else//寻找右上角位置{i--;j++;}}else//s标记升降方向,斜向下{nSnake[i][j]=nNum;if(j-1<0)//到了矩阵第一列{if(i+1==nLen)//矩阵最后一行j++;else//矩阵第一列i++;s=1;}elseif(i+1==nLen)//矩阵非第一列且最后一行{j++;s=1;}else//左下角位置{i++;j--;7、}}nNum++;if(nNum>nLen*nLen)//填充完后退出break;}for(i=0;i#includevoidmain(){constintN=20;inti=0,j=0,a[N][N],n;intm=1,8、x1,x2,y1,y2,s=1;//x1,x2,y1,y2为上、下、左、右边界//s标记数组元素升降,s==1为升,s==-1为降while(1)//输入矩阵维数{cout<<"inputmatrixrowN(N>=2):";cin>>n;cout<
4、for(i--;i>=0;i--)//这里填充奇数围的向上数字a[i][j]=m++;i++;}lap++;}//以下为输出for(i=0;i#includevoidmain(){constintMAXLEN=10;intnLen;//输入的矩阵维数int
5、nSnake[MAXLEN][MAXLEN];do//用于输入矩阵的维数{cout<<"inputanintegerlessthen"<>nLen;cout<MAXLEN);inti=0,j=0,s=1,nNum=1;//s标记升降方向,斜向上为升(s==1),斜向下为降(s==-1)while(1){if(s==1)//s标记升降方向,斜向上{nSnake[i][j]=nNum;if(i-1<0)//到了矩阵第一行斜向上最后一个{if(j+1==nLe
6、n)//到最后一列i++;else//没有最后一列j++;s=-1;}elseif(j+1==nLen)//到了矩阵右下半部分的右上角最后一个{i++;s=-1;}else//寻找右上角位置{i--;j++;}}else//s标记升降方向,斜向下{nSnake[i][j]=nNum;if(j-1<0)//到了矩阵第一列{if(i+1==nLen)//矩阵最后一行j++;else//矩阵第一列i++;s=1;}elseif(i+1==nLen)//矩阵非第一列且最后一行{j++;s=1;}else//左下角位置{i++;j--;
7、}}nNum++;if(nNum>nLen*nLen)//填充完后退出break;}for(i=0;i#includevoidmain(){constintN=20;inti=0,j=0,a[N][N],n;intm=1,
8、x1,x2,y1,y2,s=1;//x1,x2,y1,y2为上、下、左、右边界//s标记数组元素升降,s==1为升,s==-1为降while(1)//输入矩阵维数{cout<<"inputmatrixrowN(N>=2):";cin>>n;cout<
此文档下载收益归作者所有