`
yvfeng
  • 浏览: 15756 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
最近访客 更多访客>>
社区版块
存档分类
最新评论

打印回圈数

阅读更多
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	

 

分享到:
评论

相关推荐

    C++实现的报数出圈程序源代码

    以C++方式实现程序:设有N个人围坐一圈并按顺时针方向...1到N编号,从第S个人开始进行1到M报数,报数到第M个时,此人出圈,再从他的下一个人重新开始1到M的报数,如此进行下去直到所有的人都出圈为止。打印出出圈次序。

    python 实现报数 示例

    # 题目:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。

    Server(打印服务器).docx

    设置打印服务器第三个并口(LPT3)连接的打印机:在每台Windows 95计算机上选中接 在打印服务器第三个并口的打印机圈标 右击鼠标 属性 详细资料 添加端口 选中'其 它" 选中PrintSir LPR Port 确定 选中在步骤6中设置...

    货单票据打印软件 v9.0.1.zip

    可以自定义货单行数、货品项目名称、货品项目宽度、货品项目个数. 自动检索客户资料,并自动填写上地址、电话、联系人等,如之前没有则会自动保存客户资料. 自动检索显示相关客户单位名称,选中后可以将客户地址、...

    PHP实现顺时针打印矩阵(螺旋矩阵)的方法示例

    本文实例讲述了PHP实现顺时针打印矩阵的方法。...就是一圈一圈地打印,只要控制好循环就可以。 注意单行单列的情况。 实现代码 &lt;?php function printMatrix($matrix) { $row = count($matrix); $col =

    20以内数的组成与分成

    拖动图片到左右圆圈内,便会显示几和几组成几

    Java约瑟夫问题

    * Java约瑟夫问题: n个人(不同id)围成一个圈,从startId(任意数)个开始报数m(任意数)个数,数m的人出列排成新队列,m清零, * 然后又从下一个人开始数m个数开始,数到m就出列接在新队列尾部,如此重复,知道...

    税控盘票字版发票打印无二维码补丁.EXE

    4月份税控盘开票软件可以正常开票,但是二维码无法正常打印,最开始还以为是打印机问题,弄了一圈确定了是开票软件问题。咨询和查询百度后发现是软件公司搞的鬼,需要技术咨询给解决。给大家分享下解决方案,安装...

    java 经典习题.doc

    题目:打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。 1.程序分析:利用for循环控制100-999个数,...

    10个简单的java算法

    1.求n个数的最小公倍数。...给一个不多于5位的正整数,求是几位数,并逆序打印各个数字8.排序9.杨辉三角10.n个人围成圈,顺序排号,从第一个人开始报数,1-3,到3则退出圈子,问最后剩下的是第几号。

    望远镜的数字设定圈-项目开发

    数字设定圈-使用3D打印部件和Arduino Uno,Nano等(或Atmega / Atmel芯片)进行望远镜跟踪的DSC

    C语言经典例题100道

    判断回文数 31.星期几猜测游戏 32.改变文本颜色 33.学习gotoxy()与clrscr()函数 34.练习函数调用 35.设置文本颜色 36.求100之内的素数 37.对10个数进行排序 38.求3*3矩阵对角线元素之和 39.数字插入数组重新排序 40....

    c语言代码程序

    打印出杨辉三角形 学习putpixel画点 画椭圆ellipse 利用ellipse and rectangle利用ellipse and rectangle 一个最优美的图案 输入3个数a,b,c,按大小顺序输出 输入数组,最大的与第一个元素交换,最小的与最后一...

    《剑指Offer》题目及代码.zip

    40. 数组中只出现一次的两个数,而其他数都出现两次 41. 和为s的连续整数序列 42. 翻转字符串 43. n个骰子的点数及出现的概率 44. 扑克牌的顺子 45. 圆圈中最后剩下的数 46. 1+2+3+...+n的和 47. 不用加减乘除...

    黑马入学考试试题

    其实,只要明白了打印出一个十进制数的每一位的方式(不断除以10,得到的余数就分别是个位,十位,百位),就很容易理解十进制数转二进制数的这种方式。 9、28人买可乐喝,3个可乐瓶盖可以换一瓶可乐,那么要...

    约瑟夫环问题 循环队列实现C++源码

    编号为1,2,3,…,n的n个人按顺时针方向围坐一圈,每人持有一个密码(正整数)。一开始任选一个正整数作为报数的上限值m,从第一个人开始按顺时针方向自1开始顺序报数,报到m时停止。...编程打印出列顺序。

    约瑟夫(Joseph)问题 数据结构实验报告

    有测试结果 利用循环单链表求解约瑟夫...试设计一个程序打印出列顺序。如n=7,即7个人按顺时针方向围坐一圈; 每个人持有的密码分别为:3,1,7,2,4,8,4; m的初值为20; 则正确的结果应为:6,1,4,7,2,3,5。

    约瑟夫环(带密码)C++代码

    约瑟夫环:编号为1,2,3,…,n的n个人按顺时针方向围坐一圈,每人持有一个密码(正整数)。一开始任选一个正整数作为报数的上限值m,从第一个人开始按顺时针方向自1开始顺序报数,报到m时停止。...编程打印出列顺序。

    数据结构综合设计-约瑟夫环问题

    约瑟夫问题的描述是:编号为 1,2,----,n的n个人按顺时针方向围坐一圈, 每人持有一个密码(正整数)。一开始人选一个正整数作为报数上限值m,从第一个人开始按顺时针方向自1开始顺序报数,报到m时停止报数。报m的人...

    java经典编程题

    1.输出所有的“水仙花数”,水仙花数是指一个三位数,这个数的各位数字的立方和就是该数本身。 2.将一个正整数分解质因数,如:18=2*3*3; 3.输入两个正整数,求这两个数的最大公约数和最小公倍数; 4.输入一行字符...

Global site tag (gtag.js) - Google Analytics