一道简单的for循环面试题(数字龙形排序)

本道题是我从网上见到的,由于是一道好久没作的循环题,本身的思路也是陷入了一些思惟陷阱中,后来通过把大脑放空,从新看这道题后,思路立马就出来了。
题目就是完成以下图所示的效果:
在这里插入图片描述我一开始是想着将它按照奇偶行来区分每一行都是一个数组,来将这些数组进行输出,后来发现老是没法跳出循环,就改用了第二种思路:将(行列)个数放入一个数组中,当奇数行时采用正序排列,偶数行采用倒序排列就ok啦。*
有了总体的思路后就须要考虑倒序排列的问题了,其实就是将数组的位置能用行和列表示出来java

for (int i = 0; i < hang; ++i) {
				if (i % 2 != 0) {
					for (int j = 0; j < lie; j++) {
						// 赋值
						arr[i * lie + lie - j - 1] = start;
						start++;
					}
				} else {
					for (int j = 0; j < lie; j++) {
						arr[i * lie + j] = start;
						start++;
					}
				}
			}

接下来就能够完善所有代码了,所有代码以下,有须要的能够自行研究web

// 利用数组打印出蛇形结构
		public static void main(String[] args) {
			Scanner sc = new Scanner(System.in);
			System.out.print("请输入开始数据:");
			int start = sc.nextInt();
			System.out.print("请输入行数:");
			int hang = sc.nextInt();
			System.out.print("请输入列数:");
			int lie = sc.nextInt();
			// 能够知道总的数数量是 hang*lie,因此能够从start开始 一个一个的添加进数组里
			int[] arr = new int[hang * lie];
			int count = 0;
			for (int i = 0; i < hang; ++i) {
				if (i % 2 != 0) {
					for (int j = 0; j < lie; j++) {
						// 赋值
						arr[i * lie + lie - j - 1] = start;
						start++;
					}
				} else {
					for (int j = 0; j < lie; j++) {
						arr[i * lie + j] = start;
						start++;
					}
				}
			}
			for (int i = 0; i < arr.length; i++) {
				System.out.print(arr[i] + "\t");
				count++;
				if (count % lie == 0) {
					System.out.println();
				}
			}
		}

我是一个正在偷偷努力学习java的大胖子,有任何问题你们均可以发在个人我的公众号上边,我也会尽可能帮你们解决,固然,我也只是一个正在学习java的人,并不能保证“每一个(实际上是大部分问题都不能)”问题都能回答上来。数组

还有个人我的公众号会不定时更新个人java学习之路,你们若是也在学习java能够在公众号上边与我交流哦。
在这里插入图片描述svg

相关文章
相关标签/搜索