C语言蛇形矩阵
2023-12-24 20:46:50
每日一言
山有榛,隰有苓。云谁之思?西方美人。 --邶风·简兮
题目
解题思路
话不多说,直接看图
通过观察图表,我想到了这种方法:
我将数字放置的位置分为两大类:向右走和向左走
每大类里又分为3小类:
- 向左走:(1)能往左下往左下(2)左下不行向下移(3)下移不行向右移
- 向右走:(1)能往右上往右上(2)右上不行向右移(3)右移不行向下移
知道思路代码就很好写了
全部代码
#include <stdio.h>
int main()
{
int n=0;
scanf("%d",&n);
int arr[n][n];
int i=0,j=0,k=0;
int f=0;//判断移动方向,0右,1左
arr[0][0]=1;
for(k=1;k<n*n;k++)
{
if(f)//左
{
if(i+1<n&&j-1>=0)//左下合理
{
arr[i+1][j-1]=arr[i][j]+1;
i++;
j--;
}
else //左下不合理
{
if(i+1<n)//下移合理
{
arr[i+1][j]=arr[i][j]+1;
i++;
}
else //下移不行,向右移
{
arr[i][j+1]=arr[i][j]+1;
j++;
}
f=0;
}
}
else //右
{
if(i-1>=0&&j+1<n)//右上合理
{
arr[i-1][j+1]=arr[i][j]+1;
i--;
j++;
}
else//右上不合理
{
if(j+1<n)//右移合理
{
arr[i][j+1]=arr[i][j]+1;
j++;
}
else //右移不行,向下移
{
arr[i+1][j]=arr[i][j]+1;
i++;
}
f=1;
}
}
}
//打印
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
printf("%d ",arr[i][j]);
}
printf("\n");
}
return 0;
}
结语
请给自己些耐心,一口吃不成胖子。
山外青山楼外楼,莫把百尺当尽头。
保持空杯心态加油努力吧!
都看到这里啦!真棒(*^▽^*)
可以给作者一个免费的赞赞吗,这将会鼓励我继续创作,谢谢大家
编程小白写作,如有纰漏或错误,欢迎指正
文章来源:https://blog.csdn.net/qrwitu142857/article/details/135185229
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!