最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java編程實(shí)現(xiàn)打印螺旋矩陣實(shí)例代碼

 更新時(shí)間:2017年12月13日 16:33:46   作者:purelife  
這篇文章主要介紹了Java編程實(shí)現(xiàn)打印螺旋矩陣實(shí)例代碼,具有一定借鑒價(jià)值,需要的朋友可以參考下。

直接上代碼吧。

昨晚騰訊在線測(cè)試遇到的題。

螺旋矩陣是指一個(gè)呈螺旋狀的矩陣,它的數(shù)字由第一行開始到右邊不斷變大,向下變大,向左變大,向上變大,如此循環(huán)。

import java.util.Scanner;
public class mysnakematrix {
	private int n;
	//
	private int a[][];
	// 聲明一個(gè)矩陣
	private int value = 1;
	// 矩陣?yán)飻?shù)字的值
	public mysnakematrix(int i) {
		this.n = i;
		a = new int[n][n];
	}
	// 計(jì)算第m層左上角的數(shù)字
	private int getcorner(int m) {
		int corner = 1;
		int o = n - 1;
		for (int i = 0; i < m - 1; ++i) {
			corner += 4 * o;
			o = o - 2;
		}
		return corner;
	}
	// 生成矩陣的每一層的每一邊的數(shù)
	// s表示4個(gè)方向,分別取值1,2,3,4,表示4個(gè)不同的方向。
	// o表示這條邊的起始值。
	// x表示第m層每條邊的數(shù)字個(gè)數(shù)
	private void side(int s, int o, int x, int m) {
		int i = 0;
		int j = 0;
		switch (s) {
			case 1:
			      i = m - 1;
			j = m - 1;
			for (int k = 0; k < x; ++k) {
				a[i][j + k] = value;
				++value;
			}
			break;
			case 2:
			      i = m - 1;
			j = m - 1 + x;
			for (int k = 0; k < x; ++k) {
				a[i + k][j] = value;
				++value;
			}
			break;
			case 3:
			      i = m - 1 + x;
			j = m - 1 + x;
			for (int k = 0; k < x; ++k) {
				a[i][j - k] = value;
				++value;
			}
			break;
			case 4:
			      i = m - 1 + x;
			j = m - 1;
			for (int k = 0; k < x; ++k) {
				a[i - k][j] = value;
				++value;
			}
			break;
		}
	}
	// 生成蛇形矩陣的第m層
	private void shell(int m)// m表示第m層
	{
		int x = n - 1 - (m - 1) * 2;
		// x表示第m層每條邊的數(shù)字個(gè)數(shù)
		int o = getcorner(m);
		int o1 = o;
		int o2 = o1 + x;
		int o3 = o2 + x;
		int o4 = o3 + x;
		// System.out.println(o4);
		side(1, o, x, m);
		side(2, o, x, m);
		side(3, o, x, m);
		side(4, o, x, m);
	}
	// 生成蛇形矩陣
	public void snakeMatrix() {
		int m = (n + 1) / 2;
		// 計(jì)算一共有多少層
		for (int i = 1; i <= m; ++i) {
			shell(i);
		}
		if (n % 2 == 1) {
			a[n / 2][n / 2] = n * n;
		}
	}
	// 打印矩陣
	public void print() {
		for (int i = 0; i < n; ++i) {
			for (int j = 0; j < n; ++j) {
				if (a[i][j] < 10) {
					System.out.print(a[i][j] + " ");
				} else {
					System.out.print(a[i][j] + " ");
				}
			}
			System.out.println();
		}
	}
	public static void main(String args[]) {
		mysnakematrix my = new mysnakematrix(new Scanner(System.in).nextint());
		//利用Scanner獲取控制臺(tái)輸入
		my.snakeMatrix();
		my.print();
	}
}

總結(jié)

以上就是本文關(guān)于Java編程實(shí)現(xiàn)打印螺旋矩陣實(shí)例代碼的全部?jī)?nèi)容,希望對(duì)大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站:

Java語(yǔ)言描述存儲(chǔ)結(jié)構(gòu)與鄰接矩陣代碼示例

Java編程實(shí)現(xiàn)鄰接矩陣表示稠密圖代碼示例

Java編程實(shí)現(xiàn)A*算法完整代碼

如有不足之處,歡迎留言指出。感謝朋友們對(duì)本站的支持!

相關(guān)文章

  • mybatis省略@Param注解操作

    mybatis省略@Param注解操作

    這篇文章主要介紹了mybatis省略@Param注解操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-11-11
  • JAVA?String常用方法超詳細(xì)講解

    JAVA?String常用方法超詳細(xì)講解

    String其實(shí)是Java庫(kù)中的一個(gè)預(yù)定義的類,String不是基本類型,而是引用類型,使用引用類型的變量稱為引用變量,它引用一個(gè)對(duì)象,下面這篇文章主要給大家介紹了關(guān)于JAVA?String常用方法的相關(guān)資料,需要的朋友可以參考下
    2024-04-04
  • SpringBoot事件機(jī)制相關(guān)知識(shí)點(diǎn)匯總

    SpringBoot事件機(jī)制相關(guān)知識(shí)點(diǎn)匯總

    這篇文章主要介紹了SpringBoot事件機(jī)制相關(guān)知識(shí)點(diǎn)匯總,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-09-09
  • SpringBoot+MinIO實(shí)現(xiàn)文件切片極速詳解

    SpringBoot+MinIO實(shí)現(xiàn)文件切片極速詳解

    在現(xiàn)代Web應(yīng)用中,文件上傳是一個(gè)常見(jiàn)的需求,尤其是對(duì)于大文件的上傳,如視頻、音頻或大型文檔,所以本文就來(lái)為大家介紹一下如何使用Spring Boot和MinIO實(shí)現(xiàn)文件切片極速上傳技術(shù)吧
    2023-12-12
  • SpringCloud融入Python的實(shí)現(xiàn)

    SpringCloud融入Python的實(shí)現(xiàn)

    這篇文章主要介紹了SpringCloud融入Python的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • Java創(chuàng)建線程池為什么一定要用ThreadPoolExecutor

    Java創(chuàng)建線程池為什么一定要用ThreadPoolExecutor

    本文介紹了Java創(chuàng)建線程池為什么一定要用ThreadPoolExecutor,手動(dòng)方式使用ThreadPoolExecutor創(chuàng)建線程池和使用Executors執(zhí)行器自動(dòng)創(chuàng)建線程池,下文更多相關(guān)內(nèi)容需要的小伙伴可以參考一下
    2022-05-05
  • 一文教你搞懂SpringBoot自定義攔截器的思路

    一文教你搞懂SpringBoot自定義攔截器的思路

    在開發(fā)中,都離不開攔截器的使用,比如說(shuō)在開發(fā)登錄功能時(shí),實(shí)現(xiàn)權(quán)限管理功能時(shí)等,這篇文章主要帶大家使用SpringBoot梳理自定義攔截器的思路,需要的可以參考一下
    2023-08-08
  • IntelliJ IDEA2021.1 配置大全(超詳細(xì)教程)

    IntelliJ IDEA2021.1 配置大全(超詳細(xì)教程)

    這篇文章主要介紹了IntelliJ IDEA2021.1 配置大全(超詳細(xì)教程),需要的朋友可以參考下
    2021-04-04
  • java使用正則表達(dá)式過(guò)濾html標(biāo)簽

    java使用正則表達(dá)式過(guò)濾html標(biāo)簽

    本篇文章主要介紹了java正則表達(dá)式過(guò)濾html標(biāo)簽,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-11-11
  • 實(shí)例解析Java日期格式工具類DateUtil.java

    實(shí)例解析Java日期格式工具類DateUtil.java

    本文主要對(duì)Java日期格式工具類DateUtil.java進(jìn)行實(shí)例解析。具有一定的參考價(jià)值,下面跟著小編一起來(lái)看下吧
    2017-01-01

最新評(píng)論

潞西市| 苏尼特右旗| 延安市| 锦屏县| 翼城县| 徐州市| 玉龙| 扶风县| 洪泽县| 肃北| 新巴尔虎左旗| 辉南县| 紫阳县| 富川| 南江县| 饶阳县| 黔江区| 长宁县| 新乡市| 石台县| 兴业县| 平定县| 丰原市| 佛教| 定远县| 武汉市| 修武县| 渭源县| 卫辉市| 兴义市| 宁波市| 塘沽区| 城步| 城步| 沽源县| 堆龙德庆县| 泗水县| 鄢陵县| 兴城市| 兴城市| 兰溪市|