(以批处理为例):
将整个图形以对角线斜线分割,只看左半部分。
提取每条斜线里最小的数字,分别是 1 2 4 7 11 16 22 29 37 ... 。这个二阶等差数列可以用 (n-1)*n/2+1 计算。批处理即 (a+b-1-1)*(b-1+a)/2+1 。
我们提取每条斜线里最大的数字,分别是 1 3 6 10 15 21 28 36 45 ... 。这个二阶等差数列可以用 (n+1)*n/2 计算。批处理即 (a+b-1+1)*(b-1+a)/2 。
通过 e=(%%a+%%b)%%2 确定斜线奇偶性。
通过 (%%a+%%b-1-c)*(%%a+%%b-1-c) 修正右半部分的数值。
使用 !!((%%a+%%b-1)/(c+1)) 定位这些右半部分斜线。
综合后得到批处理代码:
@echo off&set c=9
for /l %%a in (1 1 %c%) do (
for /l %%b in (1 1 %c%) do set/a "d=%%a+%%b-1,e=(%%a+%%b)%%2,f=e*((d*d-d)/2+%%a)+!e*((d*d+d)/2-%%a+1)-!!(d/(c+1))*(d-c)*(d-c)"&call set/p=%%f%% <nul
echo;
)
pause
以上算法最大特征是通过坐标%%a、%%b和阶数c直接运算出该点的数值。
蛇形矩阵的蛇形矩阵的二阶等差算法
这个二阶等差数列可以用 (n-1)*n\/2+1 计算。批处理即 (a+b-1-1)*(b-1+a)\/2+1 。我们提取每条斜线里最大的数字,分别是 1 3 6 10 15 21 28 36 45 ... 。这个二阶等差数列可以用 (n+1)*n\/2 计算。批处理即 (a+b-1+1)*(b-1+a)\/2 。通过 e=(%%a+%%b)%%2 确定...
蛇形矩阵寒夜孤星蛇形矩阵的二阶等差算法
首先,将矩阵沿对角线分割,关注左半部分。对每条斜线,我们关注其最小的和最大的数字。最小数字的二阶等差数列可以通过公式 (n-1)*n\/2+1 描述,批处理表达为 %%a+%%b-1-1*(%%b-1+%%a)\/2+1。同样,最大数字的等差数列则为 (n+1)*n\/2,批处理形式为 %%a+%%b-1+1*(%%b-1+%%a)\/...
蛇形矩阵的介绍
蛇形矩阵:矩阵的一种,常被应用在编程题目与数学数列中。
pascal蛇形矩阵123456789
ans[1].x:=1; ans[1].y:=1; \/\/ ans[i] 数组记录数字i在矩阵中的横坐标和纵坐标 1的坐标为(1,1)anst:=1; \/\/ anst 为ans数组的指针 t:=2; \/\/ t表示当前操作的状态,2表示加横行然后向左下走,1表示加纵行,然后向右上走 while (ans[anst].x<>size.x) or (ans[anst]....
蛇形矩阵
for(k=n-i;k>=i;k--) { a[k][i-1]=d++; } for(k=i-1;k<n-i;k++) { a[i-1][k]=d++; } } for(i=0;
以下蛇形矩阵用 "二维数组+循环" 打:
bool CreateMetrix(int *pMetrix,int n){ int i = 0, \/\/数据元素 j = 0, \/\/列号 k = 0;\/\/行号 int iUp = 0,\/\/上边界 iDown = n,\/\/下边界 iLeft = 0,\/\/左边界 iRight = n;\/\/右边界 bool bRight = true,\/\/左右填充方向 bDown = true;\/\/上下填充方向 if (NULL == p...
谁能给我几道Qbasic的题目!十万火急!!
1.蛇形矩阵(input n=6)1 2 6 7 5 6 3 5 8 4 7 6 4 9 3 8 5 7 10 2 9 4 8 3 1 10 3 9 2 4 1 2 10 1 5 6 2.回文素数(我不多说了)
EXCEL怎么把一列数变成蛇形排列矩阵
在D2单元格输入以下公式,然后向右向下填充公式 =IF(MOD(ROW(),2)=0,OFFSET($A$3,3-COLUMN(C1)+(ROW(C1)-1)*3,),OFFSET($A$1,COLUMN(A1)-1+(ROW(C1)-1)*3,))详见附图
用C语言输出一个N阶蛇形矩阵
int Testingval(int a,int n)\/\/a 表示n行中的第几个。。n表示是N界矩阵!{ if(n==1){ array[0][0]==1;array[n][n]=n*n;} else Testingval(a-1,n);if(a%2){ int i=1;array[0][a-1]=array[0][a-2]+1;array[n-1][n-a]=n*n+1-array[0][a];while(i...
c++程序:蛇形矩阵:生成一个按蛇形方式排列自然数1,2,3,4,5,……,N^...
include<stdio.h>void main(){ int i,j,a[15][15],n,k; printf("Input\\nn= "); scanf("%d",&n); k=1; \/\/输出上三角 for(i=1;i<=n;i++) for(j=1;j<=i;j++) { if(i%2==0) a[i+1-j][j]=k; else a[j][i+1-j]=k;k++; } \/\/输出...