顺时针输出矩阵
2016-09-20 19:49
141 查看
描述
在n*n方陈里填入1,2,...,n*n,要求填成蛇形。例如n=4时方陈为:
10 11 12 1
9 16 13 2
8 15 14 3
7 6 5 4
输入直接输入方陈的维数,即n的值。(n<=100)
输出输出结果是蛇形方陈。
样例输入
样例输出
***************************************** 相关
*********************************************
【剑指offer】顺时针打印矩阵:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10.
注意:1)for(int i=0;i<res.size(); i++)
cout<<res[i];
2)int M[101][101];
for(int i=0; i<row; i++)
for(int j=0; j<col; j++)
cin>>M[i][j];
3)vector<int> res;
int left=0, top=0, right= col-1, bottom = row-1;
while(left <= right && top <= bottom)
{
for(int i=left; i<=right; i++) res.push_back(M[top][i]);
for(int i=top+1; i<=bottom; i++) res.push_back(M[i][right]);
if(top!=bottom)
for(int i=right-1; i>=left; i--) res.push_back(M[bottom][i]);
if(left!=right)
for(int i=bottom-1; i>top; i--) res.push_back(M[i][left]);
left++, top++, right--, bottom--;
}
在n*n方陈里填入1,2,...,n*n,要求填成蛇形。例如n=4时方陈为:
10 11 12 1
9 16 13 2
8 15 14 3
7 6 5 4
输入直接输入方陈的维数,即n的值。(n<=100)
输出输出结果是蛇形方陈。
样例输入
3
样例输出
7 8 1 6 9 2 5 4 3
#include int main() { int a,b,n,sum=1; int M[101][101]; scanf("%d",&n); for(a=0;a<=(n-1)/2;a++) { for(b=a;b<=n-a-1;b++) M[b][n-a-1]=sum++; //M[0][2] M[1][2] M[2][2] for(b=n-2-a;b>=a;b--) M[n-1-a][b]=sum++; //M[2][1] M[2][0] for(b=n-2-a;b>=a;b--) M[b][a]=sum++; //M[1][0] M[0][0] for(b=a+1;b<=n-2-a;b++) M[a][b]=sum++; //M[[0][1] } for(int i=0;i
***************************************** 相关
*********************************************
【剑指offer】顺时针打印矩阵:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10.
注意:1)for(int i=0;i<res.size(); i++)
cout<<res[i];
2)int M[101][101];
for(int i=0; i<row; i++)
for(int j=0; j<col; j++)
cin>>M[i][j];
3)vector<int> res;
int left=0, top=0, right= col-1, bottom = row-1;
while(left <= right && top <= bottom)
{
for(int i=left; i<=right; i++) res.push_back(M[top][i]);
for(int i=top+1; i<=bottom; i++) res.push_back(M[i][right]);
if(top!=bottom)
for(int i=right-1; i>=left; i--) res.push_back(M[bottom][i]);
if(left!=right)
for(int i=bottom-1; i>top; i--) res.push_back(M[i][left]);
left++, top++, right--, bottom--;
}
相关文章推荐
- JSTL
- 实验2 Activity 和Intent
- 第三周项目4-顺序表应用(1)
- 享元模式
- Spring配置文件applicationContext.xml(2)配置详解
- 【HDU 5184】 Brackets (卡特兰数)
- mybatis项目配置文件
- 白细胞低的原因
- 几句说给自己的话
- CSS3 3D旋转动画
- 字符串处理错误记录
- hdu 诡异的楼梯
- 在腾讯云Ubuntu14.04上安装配置jdk,tomcat,mysql,openfire
- 第十五章字符串
- C++中的struct
- 使用Radio控件切换VegaPrime视角
- 代理模式
- Java Web开发中路径问题小结(转载)
- 生成静态html乱码问题
- Mybatis一对多查询