寒假每日一题平方矩阵 II(个人练习)详细题解+推导证明(第十四天)
Posted 我是管小亮
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了寒假每日一题平方矩阵 II(个人练习)详细题解+推导证明(第十四天)相关的知识,希望对你有一定的参考价值。
文章目录
前言
明天就要过年了,心里别提有。。。有多无感了,除了能一家人在一块,毫无感觉。
今天的题目是来自语法题。
一眨眼感觉假期都要结束了,难顶
题目
输入整数N,输出一个N阶的二维数组。
数组的形式参照样例。
输入格式
- 输入包含多行,每行包含一个整数N。
- 当输入行为N=0时,表示输入结束,且该行无需作任何处理。
输出格式
- 对于每个输入整数N,输出一个满足要求的N阶二维数组。
- 每个数组占N行,每行包含N个用空格隔开的整数。
- 每个数组输出完毕后,输出一个空行。
数据范围
- 0 ≤ N ≤ 100 0≤N≤100 0≤N≤100
输入样例:
1
2
3
4
5
0
输出样例:
1
1 2
2 1
1 2 3
2 1 2
3 2 1
1 2 3 4
2 1 2 3
3 2 1 2
4 3 2 1
1 2 3 4 5
2 1 2 3 4
3 2 1 2 3
4 3 2 1 2
5 4 3 2 1
详细题解
写法1 O ( n 2 ) O(n^2) O(n2)
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
const int N = 105;
int n;
int main()
while (cin >> n, n)
for (int i = 1; i <= n; ++ i )
for (int j = i; j >= 1; -- j ) cout << j << " ";
for (int j = i + 1; j <= n; ++ j ) cout << j - i + 1 << " ";
cout << endl;
cout << endl;
return 0;
毫无疑问,这是我个人觉得最容易想到的一种写法。
如果先行再列,也不是不能写,但是可能需要一个数组来存储。
最后提交,AC😁
推导证明
直接输出的规律是从i位置,即对角线,左侧是从大到小,右侧是从小到大,需要注意的是,右侧的输出结果是 j - i + 1,不是 j 或者 j - i。
写法2 O ( n 2 ) O(n^2) O(n2)
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
const int N = 105;
int n;
int a[N][N];
int main()
while (cin >> n, n)
for (int i = 1; i <= n; i ++ )
for (int j = i, k = 1; j <= n; j ++, k ++ )
a[i][j] = k;
a[j][i] = k;
for (int i = 1; i <= n; i ++ )
for (int j = 1; j <= n; j ++ )
cout << a[i][j] << ' ';
cout << endl;
cout << endl;
return 0;
毫无疑问,这是最简单的方法,从左到右,从上到下,依次遍历,存储在数组中即可。
最后提交,AC😁
推导证明
需要注意 i 和 j 的大小关系,比如 a[i][j] 和 a[j][i]。
写法3 O ( n 2 ) O(n^2) O(n2)
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
const int N = 105;
int n;
int main()
while (cin >> n, n)
for (int i = 1; i <= n; i ++ )
for (int j = 1; j <= n; j ++ )
cout << abs(i - j) + 1 << ' ';
cout << endl;
cout << endl;
return 0;
毫无疑问,这是牛逼的方法,但是我觉得这一定不是第一时间能想到的方法。
最后提交,AC😁
推导证明
具体的思考过程如下,首先是任意选出两个点进行评估,比如(1,3)和(3,5)这两个点,相同点是什么呢,就是都是3,再就是差值的绝对值是相同的。
举一反三
类似的平方矩阵题。
总结
继续努力,坚持更新,14th打卡。
以上是关于寒假每日一题平方矩阵 II(个人练习)详细题解+推导证明(第十四天)的主要内容,如果未能解决你的问题,请参考以下文章
寒假每日一题蛇形矩阵(个人练习)详细题解+推导证明(第三天)
寒假每日一题货仓选址(个人练习)详细题解+推导证明(第一天)