对角线

神奇的幻方

99封情书 提交于 2020-01-27 00:08:35
题目描述 幻方是一种很神奇的 N∗N 矩阵:它由数字 构成,且每行、每列及两条对角线上的数字之和都相同。 当 N 为奇数时,我们可以通过下方法构建一个幻方: 首先将 1 写在第一行的中间。 之后,按如下方式从小到大依次填写每个数 若 (K−1) 在第一行但不在最后一列,则将 K 填在最后一行, (K−1) 所在列的右一列; 若 (K−1) 在最后一列但不在第一行,则将 K 填在第一列, (K−1) 所在行的上一行; 若 (K−1) 在第一行最后一列,则将 K 填在 (K−1) 的正下方; 若 (K−1) 既不在第一行,也不在最后一列,如果 (K−1) 的右上方还未填数,则将 K 填在 (K−1) 的右上方,否则将 L 填(K−1) 的正下方。 现给定 N ,请按上述方法构造 N×N 的幻方。 输入格式 一个正整数 N ,即幻方的大小。 输出格式 共 N 行 ,每行 N 个整数,即按上述方法构造出的 N×N 的幻方,相邻两个整数之间用单空格隔开。 输入输出样例 输入 #1 3 输出 #1 8 1 6 3 5 7 4 9 2 输入 #2 25 输出 #2 327 354 381 408 435 462 489 516 543 570 597 624 1 28 55 82 109 136 163 190 217 244 271 298 325 353 380 407 434 461

原来--“线性代数---行列式”---可以这样子理解。关注我的公众号,我的排版在公众号会好点~~

蓝咒 提交于 2020-01-26 18:19:44
不好意思,这一篇原来事先是在微信公众号上编辑的,有很多排版在这里显示不了,我也是第一次在网上发表文章的小白,我是一名刚上大一学软件的小白,如果感兴趣可以关注一下我的微信公众号,希望能够有各位大佬带带我这个刚上大学的小白在写博客方面飞起来,如果有和我一样的小白也希望在微信公众号上加我好友,一起讨论计算机和数学方面的知识,嘻嘻~~~ 今天的知识点清单 二阶行列式 主、次对角线 对角线展开法 排列 逆序 逆序数 逆序数的计算方法 对换 奇偶排列 n阶行列式的展开项 行列式的特殊题型 二阶行列式 二阶行列式的个人理解: 二阶行列式指4个数组成的符号,也就是2行、2列、一共是4个元素。 二阶行列式是由二元一次方程组推导出来的,是有证明过程的,下面我们就来看看这些二阶行列式是怎样推导出来的。 二阶行列式的推导: 先随便设一组二元一次方程组: 现在我们想要消去未知量X,步骤是“通分”: 最终可以解出Y的结果表达式: 同理,对于解X的结果表达式: 嘻嘻,看出啥规律了没有? 对于上面的解二元一次方程组的过程有这样的规律: 现在我们来聊一聊这个| |是个什么意思: | |是表示行列式的意思,按照我的理解,它的结果是一个值,那么| |就应该是一个计算过程或说是一种计算规则。 二阶行列式的计算规则: 为了能够更好地理解这个计算规则,下面举一个生动的例子: 我觉得这个例子非常适合理科生的表白,嘻嘻!

C++经典算法题-4N魔方阵

两盒软妹~` 提交于 2020-01-26 03:28:57
50.Algorithm Gossip: 4N魔方阵 说明 与奇数魔术方阵 相同,在于求各行、各列与各对角线的和相等,而这次方阵的维度是4的倍数。 解法 先来看看4X4方阵的解法: 简单的说,就是一个从左上由1依序开始填,但遇对角线不填,另一个由左上由16开始填,但只填在对角线,再将两个合起来就是解答了;如果N大于2,则以 4X4为单位画对角线: 至于对角线的位置该如何判断,有两个公式,有兴趣的可以画图印证看看,如下所示: 左上至右下: j % 4 == i % 4 右上至左下: ( j % 4 + i % 4 ) == 1 代码示例 # include <stdio.h> # include <stdlib.h> # define N 8 int main ( void ) { int i , j ; int square [ N + 1 ] [ N + 1 ] = { 0 } ; for ( j = 1 ; j <= N ; j ++ ) { for ( i = 1 ; i <= N ; i ++ ) { if ( j % 4 == i % 4 || ( j % 4 + i % 4 ) == 1 ) square [ i ] [ j ] = ( N + 1 - i ) * N - j + 1 ; else } } square [ i ] [ j ] = ( i - 1 ) *

numpy.eye详解

空扰寡人 提交于 2020-01-22 06:38:38
numpy.eye 用例: numpy.eye (N, M=None, k=0, dtype=<class ‘float’>, order=‘C’) 功能: 返回一个二维数组,其对角线元素为1,其余位置元素为0。 参数 变量名 数据类型 功能 N 整数 返回数组的行数 k 整数,可选参数 对角线的索引:0(默认值)代表主对角线,正整数代表上三角内的对角线,负整数代表下三角内的对角线。 dtype 数值类型,可选参数 返回数组的数值类型 order {‘C’, 'F},可选参数 是否在内存中以C或fortran(行或列)顺序存储多维数据,版本1.14.0中的新特性 返回值 变量名 数据类型 功能 I 维度为(N,M)的多维数组 除了第k条对角线上元素为1以外,其余元素均为0的数组 示例: import numpy as np np . eye ( 2 , dtype = int ) [[1, 0], [0, 1]] np . eye ( 3 , k = 1 ) [[0., 1., 0.], [0., 0., 1.], [0., 0., 0.]] github链接 https://github.com/wzy6642/numpy-translate 来源: CSDN 作者: zhenyu wu 链接: https://blog.csdn.net/wzy628810/article

ZJNU 1138 - 小兔的棋盘——中级

本小妞迷上赌 提交于 2020-01-19 15:02:47
二维图的动态规划 因为不能穿越对角线,则选取对角线的一边dp即可 选取对角线右下侧 则x轴上每个点只能由其左侧的点走过去(只有1条) 对角线上的点只能由对角线下方的点走过去 其他点可以由左侧和下侧两种方式到达 因为对角线左上和右下均可 所以答案*2 1 /* 2 Written By. StelaYuri 3 */ 4 #include<stdio.h> 5 long long s[36][36]; 6 int main(){ 7 int n,i,j,N=0; 8 for(i=1;i<=35;i++){ 9 s[i][0]=1; 10 for(j=1;j<i;j++) 11 s[i][j]=s[i][j-1]+s[i-1][j]; 12 s[i][i]=s[i][i-1]; 13 } 14 while(scanf("%d",&n)!=EOF&&n!=-1){ 15 N++; 16 printf("%d %d %lld\n",N,n,s[n][n]*2); 17 } 18 return 0; 19 } 来源: https://www.cnblogs.com/stelayuri/p/12213406.html

方阵中的最大乘积

只谈情不闲聊 提交于 2020-01-17 20:21:13
题目 在这个 n×n 方阵中,4个在同一方向(从下至上、从上至下、从右至左、从左至右或者对角线)上相邻的数的乘积最大是多少? 代码一 把乘积先存在一个数组里,然后从成绩数组里找最大值。 const testGrid = [ [40, 17, 81, 18, 57], [74, 4, 36, 16, 29], [36, 42, 69, 73, 45], [51, 54, 69, 16, 92], [7, 97, 57, 32, 16] ]; function largestGridProduct(arr) { let len = arr.length; largest = arr[0][0] //横向的4位数之和 console.log('横向的4位数之和') for (let row = 0; row < len; row++) { for (let col = 0; col < len - 3; col++) { console.log(arr[row][col], arr[row][col + 1], arr[row][col + 2], arr[row][col + 3]) largest = getLargest(arr[row][col] * arr[row][col + 1] * arr[row][col + 2] * arr[row][col + 3]) } } /

单位矩阵

浪尽此生 提交于 2020-01-16 02:34:31
单位矩阵 题目描述 X是一个灰常讨厌数学的学生,所以想请你帮他解决一个简单的关于矩阵的问题。给定一个只有0和1构成的大小为M*N的矩阵,在其中找到最大的子单位矩阵。单位矩阵是指主对角线上元素全部为1,其余元素全部为0的方阵。主对角线是指左上角到右下角方向的对角线。数据规模(1<=M,N<=1000)。 输入格式 多组数据输入,每组第一行输入M和N,空格分开,接下来M行输入矩阵数据,每行N个元素,输入以文件尾(EOF)结束。 输出格式 对于每组数据,输出该矩阵中最大子单位矩阵的行数,每次输出独占一行。 输入样例 复制 5 6 010000 010001 010000 001000 100111 2 5 01000 00110 输出样例 复制 3 2 会花思路代码段: # include <iostream> # include "stdio.h" # include <cstring> using namespace std ; int a [ 1005 ] [ 1005 ] = { 0 } ; int f [ 1005 ] [ 1005 ] = { 0 } ; int main ( ) { int n , m ; char c ; while ( scanf ( "%d %d" , & n , & m ) != EOF ) { int maxx = 0 ; int z [ 1005

输出方阵主对角线上最大元素的坐标和值

风流意气都作罢 提交于 2020-01-11 21:18:49
问题描述 阅读代码,根据已给出的代码,完成fun函数的定义片段。 Fun函数输出m维整数方阵主对角线上的最大元素的坐标和值。 注:主对角线指方阵从左上角到右下角的对角线。 输入格式 第一行输入一个整数m 接下来m行,每行输入m个整数 输出格式 输出一行,包括元素坐标和值。坐标表示见输出样例,所有标点符号均为半角字符;坐标和值之间用空格分隔。 样例输入 2 2 3 3 4 样例输出 (1,1) 4 数据规模说明 M不超过100,输入的整数不会超过10000。 #include <iostream> using namespace std; void fun(int *a[],int m) { //写一函数,输出整数矩阵的主对角线上最大元素坐标和值 int max=a[0][0]; int i; for(i=0;i<m;i++) { if(a[i][i]>max)max=a[i][i]; } cout<<"("<<i-1<<","<<i-1<<")"<<" "<<a[i-1][i-1]; // } int main() { int m; cin>>m; int *a[m];//指针数组 for(int i=0;i<m;i++) { a[i]=new int[m]; for(int j=0;j<m;j++) { cin>>a[i][j]; } } fun(a,m); return 0;

MATLAB矩阵的翻转求逆旋转转置

浪子不回头ぞ 提交于 2020-01-10 03:46:52
对角阵 对角矩阵 只有对角线上有非零元素的矩阵 数量矩阵 对角线上的元素相等的对角矩阵 单位矩阵 对角线上都为1的对角矩阵 (1)提取矩阵的对角线上的元素 diag(A) 提取矩阵A主对角线元素,产生一个列向量。 diag(A,k) 提取第k条对角线上的元素 k=0是中间的那条对角线 (2)构造对角矩阵 diag(V) 产生一个主对角线为V的对角阵 diag(V,k) 向量v为第k条对角线 例子 先建立5阶矩阵A,然后将A的第一行元素乘以1,第二行乘以2,……,第五行乘以5. >> A=[4 5 6 7 8;9 5 3 1 6;4 6 2 3 6;5 3 5 4 6;5 6 4 6 4] A = 4 5 6 7 8 9 5 3 1 6 4 6 2 3 6 5 3 5 4 6 5 6 4 6 4 >> D=diag(1:5) D = 1 0 0 0 0 0 2 0 0 0 0 0 3 0 0 0 0 0 4 0 0 0 0 0 5 >> F=D*A F = 4 5 6 7 8 18 10 6 2 12 12 18 6 9 18 20 12 20 16 24 25 30 20 30 20 三角阵 上三角阵 矩阵的对角线一下的元素全为零的矩阵 (1)ttiu(A) triu(A,k) 下三角阵 …………………上……………………… (2)tril(A) tril(A,k) 矩阵的转置

线性代数---特征值与特征向量(***重要***)

心已入冬 提交于 2020-01-07 07:46:08
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 怎么求特征值和特征向量? 实例: ξ是初始单位向量组 A是旋转矩阵。 基本性质: 非奇异也叫做满秩,非退化,可逆 矩阵的行列式与矩阵行列式的转置是一样的 最后结果得出:特征方程一样,则特征值一样。 运用根与系数关系公式直接套就可以。 迹-----所有的对角线元素都加起来。 例题: 方法一:如果不验证有可能不正确,不够严谨。 通过方法二可知等于1这个条件是多余的。 来源: oschina 链接: https://my.oschina.net/u/2914586/blog/783856