一道簡單的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

相關文章
相關標籤/搜索