public class LoopPrinter {
/**
* 获得一个存储回圈数的二维数组
*
* @param row
* 行数
* @param col
* 列数
* @return
*/
public static int[][] loopArray(final int row, final int col) {
int[][] array = new int[row][col];
int maxCount = row * col;
int count = 1;
int less = row < col ? row : col;
int loopLimit = less / 2; // 最大圈数
if (less % 2 > 0) {
if (row == col) {
array[loopLimit][loopLimit] = maxCount;
}
loopLimit++;
}
for (int loop = 1, i = 0, j = 0; loop <= loopLimit; loop++, i++, j++) {
for (; j < col - loop; j++) {
array[i][j] = count++;
}
for (; i < row - loop; i++) {
array[i][j] = count++;
}
for (; j > loop - 1 && count <= maxCount; j--) {
array[i][j] = count++;
}
for (; i > loop - 1 && count <= maxCount; i--) {
array[i][j] = count++;
}
}
return array;
}
/**
* @param args
*/
public static void main(String[] args) {
int row = 6;
int col = 5;
long nano = System.nanoTime();
int[][] array = loopArray(row, col);
System.out.println("用时:" + (System.nanoTime() - nano) + " ns");
for (int i = 0; i < array.length; i++) {
for (int j = 0; j < array[i].length; j++) {
System.out.print(array[i][j] + "\t");
}
System.out.println();
}
}
}
输出结果:
int row=6, col=5;
1 2 3 4 5
18 19 20 21 6
17 28 29 22 7
16 27 30 23 8
15 26 25 24 9
14 13 12 11 10
分享到:
相关推荐
在`while`循环结束后,使用一个`for`循环遍历数组,找出第一个非0元素(即最后留在圈中的人),并打印其值和索引。`return 0`表示程序执行成功。 这个程序的核心算法是基于数组和计数器的,它巧妙地运用了循环结构...
在正式开始打印模型之前,3D打印机会在模型下方和四周先打印出一圈或多圈的连续线条。这些线条并不与模型本身相连,但它们会与打印床接触,帮助预热打印床和喷嘴,同时检查喷嘴是否正常工作,避免由于材料未完全熔化...
以C++方式实现程序:设有N个人围坐一圈并按顺时针方向...1到N编号,从第S个人开始进行1到M报数,报数到第M个时,此人出圈,再从他的下一个人重新开始1到M的报数,如此进行下去直到所有的人都出圈为止。打印出出圈次序。
测量完成后,根据读数判断对应序号的线圈是否处于良好状态。 2. 对于热敏电阻的测量,可以使用万用表的任意笔接至热敏电阻序号上的触点进行测量,其参考值一般为10KΩ、44KΩ或48KΩ。测量后,判断热敏电阻的阻值...
这个代码会打印出所有人的出圈顺序。通过对数组的巧妙使用,我们成功地解决了约瑟夫出圈问题。这个问题不仅考察了循环和数组的操作,还涉及到了逻辑思维和问题建模能力,是计算机科学中典型的算法问题。通过理解并...
# 题目:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。
在C++编程中,"N个人围成一圈,依次数1和2,输出数2的人"是一个经典的算法问题,通常称为“约瑟夫环”(Josephus Problem)。该问题源于一个古老的犹太人的故事,涉及在困境中选择幸存者的方式。在本问题中,我们...
报告最后强调,数字营销应回归内容的本质,并打造数字营销生态圈,以适应新的市场特征和趋势。 综上所述,报告为企业提供了全面的数字营销战略框架和深入的行业发展分析,以帮助企业适应数字化转型的挑战,并在未来...
在九九乘法表的实现中,我们通常会使用两个嵌套的`for`回圈,一个控制行数,另一个控制列数。这样可以确保所有乘法组合都被遍历到。例如: ```javascript for (let i = 1; i ; i++) { for (let j = 1; j ; j++) { ...
在问题描述中,n个人围成一个圈,每个人都有一个唯一的编号1到n,并且有一个报数上限m。从第一个人开始顺时针报数,报到m的人出列,然后从下一个人继续报数,新的m值变为出列者的密码。这个过程一直持续到所有人都...
打印一圈的实现可以分为 4 步:第一步从左到右打印一行,第二步从上到下打印一列,第三步从右到左打印一行,第四步从下到上打印一列(每一步根据起始坐标和终止坐标用一个循环就能打印出一行或者一列)。 注意:...
4. **数一数,把对应的数量圈起来**:这一步训练孩子计数能力和对应关系,例如,看到3个苹果就圈出数字3。 5. **看图写数字**:通过画出的三角形数量,让孩子们学习并练习写数字,如6和12。 6. **找朋友,把相同...
在`while`循环内部,我们使用`pop(0)`方法移除列表的第一个元素(即当前报数的人),并将这个元素添加回列表末尾,模拟圈子的循环。`num`增加1,如果`num`等于m,那么表示报到m的人已经退出,我们使用`del`关键字...
5. **输出结果**:打印或返回找到的最优H圈。 在实际应用中,可能还需要考虑时间复杂性和效率优化,例如,使用动态规划或贪心策略减少搜索空间。 由于没有提供具体的代码,以上分析基于对MATLAB编程和H圈问题的...
墙线圈数指模型打印过程中每层的线圈数,增加线圈数可以提高模型的强度和稳定性。 11. 最外层擦拭距离(Outer Wall Wipe Distance) 最外层擦拭距离用于优化外壁的打印,确保每一层的衔接更加紧密。 12. 顶面皮肤层...
可以自定义货单行数、货品项目名称、货品项目宽度、货品项目个数. 自动检索客户资料,并自动填写上地址、电话、联系人等,如之前没有则会自动保存客户资料. 自动检索显示相关客户单位名称,选中后可以将客户地址、...
2. **条件判断**:在每一层内部,我们需要根据当前的行数和列数来决定打印哪个数字。这可能需要嵌套的if语句或switch-case结构。 3. **字符串拼接**:因为输出的是数字组成的字符串,所以可能需要使用字符串拼接的...