在JavaEye上看到一个支付宝的笔试题,是关于回旋矩阵的,题目如下:
输入一个矩阵的行列数量,生成一个螺旋矩阵,比如输入5,则打印:
25 24 23 22 21
10 9 8 7 20
11 2 1 6 19
12 3 4 5 18
13 14 15 16 17
输入3,则打印:
9 8 7
2 1 6
3 4 5
package cn.wingware;
public class ConvoluteNumber {
public static void main(String args[]) {
int a = 10;
int aa[][] = new int[a][a];
int p[];
for (int i = a * a; i >= 1; i--) {
p = getCoordinateByIndex(i, a);
aa[p[0]][p[1]] = i;
}
for (int i = 0; i < a; i++) {
for (int j = 0; j < a; j++) {
System.out.print(aa[j][i] + "\t");
}
System.out.println("");
}
}
/**
* 获取总数
*
* @param count
* @return
*/
private static int getAllCountFor(int count) {
return count * count;
}
/**
* 获取
*
* @param count
* @return
*/
private static int getCount(int count) {
if (count < 1) {
throw new RuntimeException("数字应该在大于0.");
}
if (count == 1) {
return 1;
}
return count * 4 - 4;
}
/**
* 获取坐标轴
*
* @param index
* 第几位数
* @param count
* 输入量
* @return
*/
public static int[] getCoordinateByIndex(int index, int count) {
if (index <= 0 || index > getAllCountFor(count)) {
throw new RuntimeException("数字应该在[0," + (getAllCountFor(count) - 1) + "]");
}
int t = count;
int temp = count;
for (int i = count; i >= 1; i = i - 2) {
int tt = getAllCountFor(i);
t = i;
if (tt >= index && index > tt - getCount(i)) {
break;
}
temp--;
}
int begin = count - temp;
/** 起点坐标 */
// int x = 0, y = 0;
/** 偏移量 */
int a = begin, b = begin;
int _begin = getAllCountFor(t) - getCount(t);
if ((_begin + (t - 1) * 4) >= index && index > (_begin + (t - 1) * 3)) {
a = (_begin + (t - 1) * 4) - index + begin;
} else if ((_begin + (t - 1) * 3) >= index && index > (_begin + (t - 1) * 2)) {
a = count - begin - 1;
b = (_begin + (t - 1) * 3) - index + begin;
} else if ((_begin + (t - 1) * 2) >= index && index > (_begin + (t - 1) * 1)) {
a = count - ((_begin + (t - 1) * 2) - index) - begin - 1;
b = count - begin - 1;
} else if ((_begin + (t - 1) * 1) >= index) {
b = index - (_begin + (t - 1) * 1) + count - begin - 1;
}
return new int[] { a, b };
}
}
小弟不才,写了好大功夫。。。
哎!~正的是老了。
分享到:
相关推荐
用C语言编写回旋矩阵,可以产生任意阶的回旋矩阵,包括矩阵,以及图形的表示,直观
在Python中,实现回旋矩阵(也称为螺旋矩阵或旋转矩阵)是一个有趣且具有挑战性的任务。通过构建一个按螺旋顺序填充数字的矩阵,可以加深对数组操作和循环控制的理解。本文将详细探讨如何使用Python结合numpy库来...
### C#中的回旋矩阵实现 #### 知识点概览 本文将详细介绍如何在C#中实现一种特殊的矩阵——回旋矩阵。回旋矩阵是一种按照特定规则填充数字的二维数组,其特点是数字从中心向外扩展,且按照顺时针方向进行填充。此...
回旋矩阵,也被称为螺旋矩阵或旋转矩阵,是一种特殊的矩阵排列方式。在回旋矩阵中,元素会按照顺时针或者逆时针方向螺旋式地填充。这种矩阵在某些算法和数据结构问题中有着广泛的应用,例如在图像处理、数组遍历等...
求N阶回旋矩阵,在给定阶数的二维数组外构建搜索边界,使用试探法求解
“回旋矩阵”在计算机图形学中用于表示旋转操作,是矩阵变换的一种,可能在学生系统中用于实现界面元素的动态旋转效果。 “计算机图形学”是开发OpenGL应用的基础,它涉及点、线、面的绘制,光照、纹理映射等概念,...
1. **边界条件**:回旋数矩阵通常以一个固定的大小开始,如2x2、3x3等,然后随着需要填充的数字数量增加,矩阵的尺寸也会相应地增大。 2. **顺序规则**:数字填充遵循一定的顺序,通常是从左上角开始,沿着顺时针...
在Matlab中进行三维回旋仿真是一个非常实用的技术,尤其对于物理、工程以及计算机图形学等领域的研究者和学生来说。本项目旨在为新手提供一个学习和交流的基础平台,帮助他们理解如何利用Matlab来模拟物体在三维空间...
回旋数,也被称为螺旋数或旋转数,是一种在矩阵中按照特定顺序排列的数字模式。在C#编程中,创建一个控制台程序来展示回旋数矩阵是一种很好的练习,可以提升对数组和循环控制的理解。这个程序的核心是通过嵌套的for...
我们提出了一类新的N = 4 $$ \ ... 这些产生通常与通量的存在相关的动力学现象,例如模糊膜,内部回旋加速器运动和约束弦的出现。 我们还展示了如何通过在三个球体上进行三维超对称颤动量规理论的降维来获得这些模型。
CCD)摄像机可以获得高炉回旋区内累积的二维温度辐射图像,然后将高炉回旋区均分成若干小块,利用数学模型近似模拟回旋区内的辐射传热过程并建立矩阵方程,通过求解方程获得高炉回旋区内的三维温度场. 在模拟辐射...
在最流行的替代方案中,多通道NMF(MNMF)和基于受约束的空间协方差模型的进一步推导已成功地用于分离多麦克风回旋混合物。 这封信提出了通过考虑具有Ray-Space转换信号的混合模型来提出MNMF扩展,其中幅度数据成功...
等时性模式是SRing的关键工作模式,它通过设定使得目标离子的回旋周期与动量无关,以提高时间分辨率。在这种模式下,由于β函数较大,任何磁铁场的误差或安装不准确都可能导致显著的闭轨畸变,进而影响线性光学性能...
5. 归一化判断矩阵,计算特征向量和权重,判断矩阵的一致性指数(CI),评估矩阵的一致性。 6. 分别计算方案层对准则层的权重,再结合准则层的权重,综合评价每个锚地。 7. 排序锚地:根据计算出的权重,对各个锚地...
14. **回旋函数**:最后的解答题讨论了一种特殊的函数——回旋函数,需要理解回旋函数的定义,并能判断函数是否满足该性质。 这些题目覆盖了高中数学的主要知识点,通过解答这些题目,学生可以检验自己对这些概念的...
在科学与工程领域,数据的分析与处理是至关重要的。...通过对本章的阅读和理解,可以为后续章节关于常用分布函数、随机数的产生和检验、随机模拟方法、矩阵算法以及多元线性与非线性回归分析的学习打下坚实的基础。
回旋核心滤镜基于数学表达式,通过矩阵运算改变像素邻近区域的值,从而创造出各种视觉效果,如模糊、锐化等。用户可以选择预设的矩阵模式,也可以自定义数值。Scale参数用于缩放矩阵的影响,Offset参数则为计算结果...
通过构造两两比较矩阵,对每个因素进行权重分配,计算判断矩阵的特征根和一致性比率(CR),以检验判断矩阵的一致性。通过这一过程,可以量化各因素的重要性。 4. 综合评价:根据准则层对方案层的评价,结合各因素...
导出强耦合磁极化子的第一内部激发态能量、激发能量和从第一内部激发态到基态的跃迁谱线频率随量子点的横向和纵向有效受限长度、磁场的回旋频率和电子-声子耦合强度的变化关系。数值计算结果表明:第一内部激发态能量...