东华大学OJ58--矩阵转换

58矩阵转换
本文介绍了一个简单的矩阵操作问题,即如何将一个r×r的矩阵按照左上到右下的对角线进行转换,形成新的矩阵。通过给出具体的例子和代码实现,帮助读者理解矩阵转置的概念。

58 矩阵转换

作者: ZhouMingLiang 时间限制: 1S章节: 二维数组

问题描述 :

明明是一个很聪明的孩子,学什么东西都很快。但是他也有个缺点,就是不愿意做重复的劳动,往往学会一样东西以后,就不太愿意再去碰它。有一天,明明在数学课上学了矩阵的转换,即有一个r×r的矩阵,把矩阵中的数以左上到右下的对角线的方式进行交换,然后形成一个新的矩阵。

例如:有个3×3的矩阵如下:

1 2 3

4 5 6

7 8 9

通过以左上到右下的对角线交换后,形成了一个新的矩阵:

1 4 7

2 5 8

3 6 9

明明很快就学会了,然后自己动手做了几个类似的转换。但是,课后老师布置了很多矩阵转换的作业,让同学回家练习,这就使明明很厌烦了,觉得自己已经学会了,就没有再练习的必要了。于是明明就请你帮个忙,帮他写一个程序,来计算矩阵的交换,帮他完成老师布置的作业。

明明的问题可以归结为:有一个r×r的矩阵,把矩阵中的数以左上到右下的对角线的方式进行转换,然后输出转换后的矩阵。

输入说明 :

你写的程序要求从标准输入设备中读入测试数据作为你所写程序的输入数据。标准输入设备中有多组测试数据,每组测试数据有多行,每组测试数据的第一行有一个整数r(1≤r≤10),表示一个r×r的矩阵,接下来有r行,每行有r个整数,表示要转换的矩阵中的数,每个数用一个空格隔开。每组测试数据与其后一组测试数据之间没有任何空行,第一组测试数据前面以及最后一组测试数据后面也都没有任何空行。

输出说明 :

对于每一组测试数据,你写的程序要求计算出一组相应的运算结果,并将这一组运算结果作为你所写程序的输出数据依次写入到标准输出设备中。每组运算结果为一个转换后的矩阵。每组运算结果形成r行数据,每一行的数字之间以一个空格分隔,其行首和行尾都没有任何空格,每组运算结果与其后一组运算结果之间有一个空行,最后一组运算结果后面没有空行。 注:通常,显示屏为标准输出设备。

输入范例 :

4
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
2
1 3
2 4

输出范例 :

1 5 9 13
2 6 10 14
3 7 11 15
4 8 12 16

1 2
3 4

算法思想

就是矩阵的转转置,用不到什么算法

代码

#include<stdio.h>
int main()
{
	int n;
	int i,j;
	
	while(~scanf("%d",&n))
	{
		int a[10][10];
		for(i=0;i<n;i++)
		{
			for(j=0;j<n;j++)
			{
				scanf("%d",&a[i][j]);
			}
		}
		for(i=0;i<n;i++)
			for(j=0;j<n;j++)
			{
				if(j<n-1)
					printf("%d ",a[j][i]);
				else
					printf("%d\n",a[j][i]);
			}
		printf("\n");
	}
	return 0;
}
### 关于东华大学OJ中的进制转换问题 对于东华大学在线Judge系统中涉及的进制转换题目,主要任务是从十进制转换到指定的N进制(其中2 ≤ N ≤ 16),并处理可能存在的多个测试案例以及正负数值的情况。 #### 输入描述 程序接收一组或多组测试数据。每组测试数据由两个整数组成:第一个整数`N`表示待转换的原始十进制数;第二个整数`R`为目标进制范围内的基数[^2]。 #### 解决方案概述 为了实现上述功能,可以采用循环除法的方式逐步求解每一位上的余数,并构建最终的结果字符串。当遇到大于等于10的商时,则按照规定替换成相应的英文字母来表达这些值。此外还需要考虑如何妥善处理负数情况下的输出格式。 下面给出具体的Python代码示例: ```python def decimal_to_base(n, base): digits = "0123456789ABCDEF" result = "" is_negative = n < 0 n = abs(n) while n != 0: remainder = n % base result += str(digits[remainder]) n //= base if not result: return '0' final_result = ''.join(reversed(result)) if is_negative and base == 10: return '-' + final_result elif is_negative: return '-(' + final_result + ')' return final_result if __name__ == "__main__": t = int(input().strip()) results = [] for _ in range(t): n, r = map(int, input().split()) converted_value = decimal_to_base(n, r) results.append(converted_value) for res in results: print(res) ``` 此段代码实现了从标准输入读取多组测试样例的功能,并针对每一组样本调用了`decimal_to_base()`函数完成实际的进制转换操作。最后将所有计算得到的结果依次打印出来。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值