社区
C++ 语言
帖子详情
矩阵算法
cy_i_lh
2007-12-04 02:49:09
输入 n= 3 要求输出矩阵 n*n
1 2 3
8 9 4
7 6 5
输入 n= 4 要求输出
1 2 3 4
14 15 16 5
11 12 13 6
10 9 8 7
...全文
221
4
打赏
收藏
矩阵算法
输入 n= 3 要求输出矩阵 n*n 1 2 3 8 9 4 7 6 5 输入 n= 4 要求输出 1 2 3 4 14 15 16 5 11 12 13 6 10 9 8 7
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Wolf_FienD
2007-12-04
打赏
举报
回复
NND 又见 螺旋 贴
http://topic.csdn.net/u/20071113/07/ea2188d2-154e-40a8-846c-d2fbff0c95b0.html
Aaron_Jerry
2007-12-04
打赏
举报
回复
看错了 不好意思
不过我想思路应该还是差不多的。
Aaron_Jerry
2007-12-04
打赏
举报
回复
1的位置是固定的(0,0),行进方向:右->下->左->上,在每个方向上找出行进步数的规律就可以了。
按照这种思路的代码如下:
#include <stdio.h>
#define N 5 //控制矩阵大小
int matrix[N][N];
int row_num,col_num;
int number;
int way; //行进方向
int right=1; //行进次数
int down=1;
int left=1;
int up=1;
void turn_right();
void turn_down();
void turn_left();
void turn_up();
void main()
{
int i,j;
while(number < N*N)
{
switch(way)
{
case 0:
turn_right();
break;
case 1:
turn_down();
break;
case 2:
turn_left();
break;
case 3:
turn_up();
break;
default:
break;
}
}
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
printf("%-4d",matrix[i][j]);
printf("\n");
}
}
void turn_right()
{
int j;
int col=col_num;
if(row_num==0 && col_num==0)
{
for(j=col;j<=N-right;j++)
matrix[row_num][j]=++number;
col_num=col+N-1;
}
else
{
for(j=col+1;j<=col+N-2*(right-1);j++)
matrix[row_num][j]=++number;
col_num=col+N-2*(right-1);
}
right++;
way=1;
}
void turn_down()
{
int i;
int row=row_num;
for(i=row+1;i<=row+N-(2*down-1);i++)
matrix[i][col_num]=++number;
row_num=row+N-(2*down-1);
down++;
way=2;
}
void turn_left()
{
int j;
int col=col_num;
for(j=col-1;j>=col-(N-(2*left-1));j--)
matrix[row_num][j]=++number;
col_num=col-(N-(2*left-1));
left++;
way=3;
}
void turn_up()
{
int i;
int row=row_num;
for(i=row-1;i>=row-(N-2*up);i--)
matrix[i][col_num]=++number;
row_num=row-(N-2*up);
up++;
way=0;
}
ar_2002
2007-12-04
打赏
举报
回复
规律有点岐义 如当n为5时
1 2 3 4 5
22 23 24 25 6
18 19 20 21 7
14 15 16 17 8
13 12 11 10 9
1 2 3 4 5
25 24 24 22 6
18 19 20 21 7
14 15 16 17 8
13 12 11 10 9
是哪种?
矩阵
分解
算法
-Cholesky
Matlab,
矩阵
分解
算法
之一——Cholesky分解方法,用于交流学习,加深对
矩阵
分解方法的理解
QR
算法
求
矩阵
特征值的matlab实现
QR
算法
求
矩阵
特征值的matlab实现
Winograd
矩阵
乘法
算法
用于任意阶
矩阵
时的一种新处理方法.docx
Winograd
矩阵
乘法
算法
用于任意阶
矩阵
时的一种新处理方法.docx
矩阵
连乘
算法
的比较
矩阵
连乘,动态规划,直接递归,备忘录方法的比较。
几个推荐
算法
的java实现
java实现的几个推荐
算法
:slopeone SVD,RSVD,ItemNeighborSVD 内有readme,相关内容在blog.csdn.net/lgnlgn
C++ 语言
65,207
社区成员
250,517
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章