我是靠谱客的博主 精明魔镜,最近开发中收集的这篇文章主要介绍Acwing---756. 蛇形矩阵(Java)_寒假每日一题活动①. 题目②. 思路③. 学习点④. 代码实现,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
Acwing---429. 奖学金
- ①. 题目
- ②. 思路
- ③. 学习点
- ④. 代码实现
①. 题目
输入两个整数n和m,输出一个n行m列的矩阵,将数字 1 到 n*m 按照回字蛇形填充至矩阵中。
具体矩阵形式可参考样例。
输入格式
输入共一行,包含两个整数n和m。
输出格式
输出满足要求的矩阵。
矩阵占n行,每行包含m个空格隔开的整数。
数据范围
1≤n,m≤100
输入样例:
3 3
输出样例:
1 2 3
8 9 4
7 6 5
②. 思路
- 使用两个一维数组存储int[] dx= {-1,0,1,0},dy= {0,1,0,-1},右下左上移动值
- 定义一个方向direct=1作为dx dy的下标,先向右走,如果越边界或者访问过,进行d=(d+1)%4回路拐弯;
③. 学习点
④. 代码实现
import java.util.*;
public class Acwing_756_蛇形矩阵 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n=scanner.nextInt();
int m=scanner.nextInt();
//定义移动的偏移量
int[] dx= {-1,0,1,0},dy= {0,1,0,-1};
int d=1 ,x=0,y=0;
//创建二维数组结果
int[][] res=new int[n][m];
//从1开始 遍历到m*n
for(int i=1;i<=m*n;i++) {
//先进行移动 判断新的点判断越界 或者是否已经访问过
int a=x+dx[d];
int b=y+dy[d];
//判断越界 或者是否已经访问过
if(a<0||a>=n ||b<0||b>=m ||res[a][b]!=0) {
d=(d+1)%4;
}
//若没有,直接移动到新的节点
res[x][y]=i;
x+=dx[d];
y+=dy[d];
}
for(int [] nums:res) {
for(int num:nums) {
System.out.print(num+" ");
}
System.out.println();
}
}
}
最后
以上就是精明魔镜为你收集整理的Acwing---756. 蛇形矩阵(Java)_寒假每日一题活动①. 题目②. 思路③. 学习点④. 代码实现的全部内容,希望文章能够帮你解决Acwing---756. 蛇形矩阵(Java)_寒假每日一题活动①. 题目②. 思路③. 学习点④. 代码实现所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复