每日一题(小白)暴力娱乐篇30

顺时针旋转,从上图中不难看出行列进行了变换。因为这是一道暴力可以解决的问题,我们直接尝试使用行列转换看能不能得到想要的结果。

复制代码
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
	    int n=scan.nextInt();
	    int m=scan.nextInt();
	    int count=0;
	    for (int i = 0; i < n; i++) {
			for (int j = 0; j < m; j++) {
				arr[i][j]=scan.nextInt();
			}
		}
	    for (int i = 0; i < n; i++) {
			for (int j = 0; j < m; j++) {
				System.out.print(arr[j][i]+" ");
			}
			System.out.println();
		}
		scan.close();
	}

如上图所示我们将行列直接转换,但是我们会得到如下的示例结果。由于在进行行列转换的时候,将预先的3行变成4列,4列变成三行超出了原来的数组长度导致了出现0并且转换错误的情况。接下来我们观察一下顺时针转换的下标的位置变化规律可以发现1 3 5 7由原来的第一行(0,0)~(0,3)转换为第三列(0,2)~(3,2),我们不难发现坐标在原来的基础上实现的是行递增,列不变。

复制代码
3 4
1 3 5 7
9 8 7 6
3 5 9 7
1 9 3 0 
3 8 5 0 
5 7 9 0 

代码实现👇

复制代码
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
	    int n=scan.nextInt();
	    int m=scan.nextInt();
	    int count=0;
	    for (int i = 0; i < n; i++) {
			for (int j = 0; j < m; j++) {
				arr[i][j]=scan.nextInt();
			}
		}
	    for (int i = 0; i < m; i++) {//行变为列的大小
			for (int j = n-1; j >=  0; j--) {//列每次按原来的行递减输出
				System.out.print(arr[j][i]+" ");
			}
			System.out.println();
		}
		scan.close();
	}

大家多动手,比较简单

相关推荐
czlczl200209252 小时前
告别 try-catch 地狱:Spring Boot 全局异常处理 (GlobalExceptionHandler) 最佳实践
java·spring boot·后端
Goldn.8 小时前
Java核心技术栈全景解析:从Web开发到AI融合
java· spring boot· 微服务· ai· jvm· maven· hibernate
fie88899 小时前
NSCT(非下采样轮廓波变换)的分解和重建程序
算法
李慕婉学姐9 小时前
【开题答辩过程】以《基于Android的出租车运行监测系统设计与实现》为例,不知道这个选题怎么做的,不知道这个选题怎么开题答辩的可以进来看看
java·后端·vue
m0_740043739 小时前
SpringBoot05-配置文件-热加载/日志框架slf4j/接口文档工具Swagger/Knife4j
java·spring boot·后端·log4j
编织幻境的妖9 小时前
SQL查询连续登录用户方法详解
java·数据库·sql
晨晖29 小时前
单链表逆转,c语言
c语言·数据结构·算法
未若君雅裁10 小时前
JVM面试篇总结
java·jvm·面试
kk哥889910 小时前
C++ 对象 核心介绍
java·jvm·c++
招风的黑耳10 小时前
我用SpringBoot撸了一个智慧水务监控平台
java·spring boot·后端