S型矩阵的输出
来源:互联网 发布:网络专员岗位职责 编辑:程序博客网 时间:2024/05/24 07:28
输出如下如示的数组:
其代码如下:
#include<iostream>
#define N 8
using namespace std;
int main()
{
enum{right,down,left,up};//表示四个方向
///起始点:
int i=0;
int j=0;
///临时点
int ti=i;
int tj=j;
///当前结点等于前一结点时为0,否则为1
bool bl=0;
int dr=right;//开始时向右前进
int a[N][N]={0};
///m为结点总数,当为一个方形为k+1的平方
int m=0;
cout<<i<<j<<endl;
///输出为长为k的文形
for(int k=1;k<N;k++)
{
int s=(k+1)*(k+1);//最小的方形长为2,所以为k+1
while(j<k&&m<s)//方形的横边j长小于文形长k
{///方向为右
if(dr==left)break;//当方向为右时不能向左倒退
if(i==ti&&j==tj&&bl==0)//当前的结点没有输出时输出
{
cout<<i<<j<<"..."<<endl;
a[i][j]=m+1;
m++;//总结点加1;
bl=1;//已输出
}
if(m==s)break;//方形完成输出退出
j++;//向右进一步
bl=0;//输出标志为0
///给临时结点赋值
ti=i;
tj=j;
dr=right;//再向右走
}
while(i<k&&m<s)
{
if(dr==up)break;
if(i==ti&&j==tj&&bl==0)
{
cout<<i<<j<<"***"<<endl;
a[i][j]=m+1;
m++;
bl=1;
}
if(m==s)break;
i++;
bl=0;
ti=i;
tj=j;
dr=down;
}
while(j>0&&m<s)
{
if(dr==right)break;
if(i==ti&&j==tj&&bl==0)
{
cout<<i<<j<<"+++"<<endl;
a[i][j]=m+1;
m++;
bl=1;
}
if(m==s)break;
j--;
bl=0;
ti=i;
tj=j;
dr=left;
}
while(i>0&&m<s)
{
if(dr==down)break;
if(i==ti&&j==tj&&bl==0)
{
cout<<i<<j<<"###"<<endl;
a[i][j]=m+1;
m++;
bl=1;
}
if(m==s)
break;
i--;
bl=0;
ti=i;
tj=j;
dr=up;
}
///每次边长为k时,要输出方形,若不为方形,要继续输出
if(m!=s) k--;
}
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
{
cout<<a[i][j]<<"/t";
}
cout<<endl;
}
return 0;
}
其算法如下
- S型矩阵的输出
- 输出一个S型矩阵( JAVA 代码)
- 蛇形矩阵的输出
- 输出回型矩阵
- C++的s输出
- 输出一个有趣的矩阵
- 数组矩阵的顺时针输出
- 输出estimateRigidTransform返回的矩阵
- c语言---矩阵输出问题(之型矩阵输出)
- 矩阵输出
- 矩阵输出
- 矩阵输出
- 矩阵输出
- 矩阵输出
- 矩阵输出
- 矩阵输出
- 矩阵输出
- 矩阵,Z形矩阵,S形矩阵,回形矩阵的java实现
- whoosh笔记:用Apache commons-net 包对服务器上的文件进行先重写后删除操作
- Android - Unparsed aapt error(s)错误的处理方法
- vs2008序列号
- hibernate 更新 update执行后 数据库改变后,立刻回到原来的样子 好像回滚一样
- 田金龙老师讲解杨式太极拳的起势
- S型矩阵的输出
- 开机自动运行---/etc/init.d/rcS 分析【转】
- C/C++语言中void类型及void*指针
- gridview调用显示日期时候格式问题
- SQLManager2007LiteforMySQL
- Eclipse关闭No grammar constraints (DTD or XML schema) detected for the document警告
- cmd
- extjs实例 ---学习小记
- 十级台阶走法(递归法)