每日一题(小白)暴力娱乐篇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();
	}

大家多动手,比较简单

相关推荐
冻柠檬飞冰走茶10 小时前
PTA基础编程题目集 7-8超速判断(C++语言实现)
开发语言·数据结构·c++·算法
机建狂魔10 小时前
Codex 接入第三方模型 API 实战:以 Mimo 为例
java·服务器·数据库·ai·ai编程·codex
玖玥拾10 小时前
LeetCode 88 合并两个有序数组
算法·leetcode
每日新鲜事10 小时前
北京中阔律师事务所周盟律师参编《建设工程施工合同纠纷实务与裁判规则》正式出版
娱乐
数据皮皮侠AI10 小时前
上市公司数字供应链金融指数(2010-2024)
大数据·人工智能·算法
2501_9423895511 小时前
Epoch AI旗下FrontierMath的负责人Elliot Glazer
数据结构·决策树·动态规划·散列表
山峰哥11 小时前
数据库工程与SQL调优:从慢查询到秒级响应的实战之路
java·开发语言·数据库·sql·深度优先·启发式算法
乐观的Terry11 小时前
11、发布系统-用户认证与权限体系
java·spring boot·spring·spring cloud·mybatis
前端开发张小七11 小时前
Java 学习笔记 · 第二课:面向对象核心(封装、继承、多态)及接口与异常
java·后端·程序员
wangjialelele11 小时前
Selenium4 + Java Web自动化测试入门指南:从环境搭建到常用操作详解
java·开发语言·前端·测试工具·自动化