登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

秒大刀 博客

好好学习 天天向上

 
 
 

日志

 
 
 
 

回字矩阵的生成  

2006-02-23 21:44:23|  分类: C/C++ |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

/**********************************************\
以“回”字的形式输出从1以后的数字,如下:
若输入3,则输出:
1 2 3
8 9 4
7 6 5
\**********************************************/
//#define DEBUG

#include<iostream.h>
#include<process.h>
void main()
{
int num;
int counter=1;
cout<<"Please input a number : ";
cin>>num;
if(num<=0)
{
cout<<"Input Error!"<<endl;
abort();
}
int i,j;
int **ppdata=new int*[num];
for(i=0;i<num;++i)
{
ppdata[i]=new int[num];
}
/////////////////////////
i=j=0;
int maxi(num),maxj(num),mini(-1),minj(-1);
lefttoright:
for(;j<maxj;++j)
{
ppdata[i][j]=counter++;
#ifdef DEBUG
cout<<i<<'\t'<<j<<'\t'<<counter-1<<endl;
#endif
}
--j;++i;
mini++;
if((maxi-mini<=1)&&(maxj-maxi<=1))
goto end;
//uptodown:
for(;i<maxi;++i)
{
ppdata[i][j]=counter++;
#ifdef DEBUG
cout<<i<<'\t'<<j<<'\t'<<counter-1<<endl;
#endif
}
--i;
--j;
maxj--;
if((maxi-mini<=1)&&(maxj-maxi<=1))
goto end;
//righttoleft:
for(;j>minj;--j)
{
ppdata[i][j]=counter++;
#ifdef DEBUG
cout<<i<<'\t'<<j<<'\t'<<counter-1<<endl;
#endif
}
++j;
--i;
maxi--;
if((maxi-mini<=1)&&(maxj-maxi<=1))
goto end;
//downtoup:
for(;i>mini;--i)
{
ppdata[i][j]=counter++;
#ifdef DEBUG
cout<<i<<'\t'<<j<<'\t'<<counter-1<<endl;
#endif
}
++i;
++j;
minj++;
if((maxi-mini<=1)&&(maxj-maxi<=1))
goto end;
goto lefttoright;
/////////////////////////
end:
cout<<"The answer is :"<<endl;
for(i=0;i<num;++i)
{
for(j=0;j<num;++j)
{
cout<<ppdata[i][j]<<'\t';
}
cout<<endl;
}
for(j=0;j<num;++j)
{
delete [](ppdata[j]);
}
delete ppdata;
}
 

  评论这张
 
阅读(837)| 评论(0)

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018