文章目录
- 每日一言
- 题目
- 解题思路
- 全部代码
- 结语
每日一言
山有榛,隰有苓。云谁之思?西方美人。 --邶风·简兮
题目
解题思路
话不多说,直接看图
通过观察图表,我想到了这种方法:
我将数字放置的位置分为两大类:向右走和向左走
每大类里又分为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;
}
结语
请给自己些耐心,一口吃不成胖子。
山外青山楼外楼,莫把百尺当尽头。
保持空杯心态加油努力吧!
都看到这里啦!真棒(*^▽^*)
可以给作者一个免费的赞赞吗,这将会鼓励我继续创作,谢谢大家
编程小白写作,如有纰漏或错误,欢迎指正