0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何輸出這樣的矩陣呢?

算法與數(shù)據(jù)結(jié)構(gòu) ? 來源:小K算法 ? 作者:小K算法 ? 2022-05-13 11:15 ? 次閱讀

01 故事起源有這樣的一種矩陣,從左上角開始,順時針從外向里旋轉(zhuǎn),數(shù)字依次遞增,如果給定任意行n、列m,請問如何輸出這樣的矩陣呢? 45346602-d267-11ec-bce3-dac502259ad0.jpg ? ?02 分析這個問題第一眼就覺得很簡單,為啥呢,因為規(guī)律很明顯,問題描述都已經(jīng)說的很清晰了,只要按照要求模擬一遍就行了。
如果現(xiàn)在讓你把這個問題描述給其他人,你是不是也會這樣來描述:一直向前走,無路可走向右轉(zhuǎn)。。。 455742bc-d267-11ec-bce3-dac502259ad0.jpg ? ?03 模擬啥是模擬呢,模擬就是按照你的想法,機械的執(zhí)行命令就可以了,沒有啥算法可言,就像這個問題一樣。 4572a4f8-d267-11ec-bce3-dac502259ad0.jpg ?不過機器并不能聽懂你的高級語言,所以需要翻譯一下。 458b2a50-d267-11ec-bce3-dac502259ad0.jpg ?說機話
整個過程拆解為4個步驟:
從矩陣左上角開始向右直到邊界;2)向下;3)向左;4)向上。
重復上面4個步驟,直到填滿整個矩陣。
45ab891c-d267-11ec-bce3-dac502259ad0.jpg ?于是我們就得到了初步的框架:

			while(還沒填滿){  //向右直到邊界 j++;  //向下直到邊界 i++;  //向左直到邊界 j--;  //向上直到邊界  i--; }
			
									04
									細節(jié)從左向右,結(jié)束時j超出邊界,需要j--。最上一行已填滿,上邊界下移,同時i也下移。
			45cd85da-d267-11ec-bce3-dac502259ad0.jpg
			?從上向下,結(jié)束時i超出邊界,需要i--。最右一列已填滿,右邊界左移,同時j也左移。
			45eb6ece-d267-11ec-bce3-dac502259ad0.jpg
			?其余2個過程同理。
			
										05
										代碼實現(xiàn)
#defineROW5
#defineCOLUMN5
voidmain(){
intleft=0,right=COLUMN-1,top=0,bottom=ROW-1;
intf[ROW][COLUMN],i=0,j=0,num=1;
while(i>=top&&i<=?bottom?&&?j?>=left&&j<=?right)?{
????????//left->right
while(j<=?right)?{
????????????f[i][j++]?=?num++;
????????}
????????j--;
????????top++;
????????i++;
????????//top->bottom
while(i<=?bottom)?{
????????????f[i++][j]?=?num++;
????????}
????????i--;
????????right--;
????????j--;
????????//right->left
while(j>=left){
f[i][j--]=num++;
}
j++;
bottom--;
i--;
//bottom->top
while(i>=top){
f[i--][j]=num++;
}
i++;
left++;
j++;
}
}
06 總結(jié)模擬問題一般都比較簡單,只需要把整個框架過程抽象出來,然后機械的實現(xiàn)即可。但偶爾也會遇到復雜的模擬,一般都是細節(jié)涉及的比較多,比如邊界信息太多,或者過程太多等。不過這種問題很適合鍛煉代碼實現(xiàn)能力,多做就能達到“有思想就一定能實現(xiàn)”的狀態(tài)。 審核編輯 :李倩

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 模擬
    +關(guān)注

    關(guān)注

    7

    文章

    1416

    瀏覽量

    83824
  • 矩陣
    +關(guān)注

    關(guān)注

    0

    文章

    417

    瀏覽量

    34413

原文標題:旋轉(zhuǎn)矩陣

文章出處:【微信號:TheAlgorithm,微信公眾號:算法與數(shù)據(jù)結(jié)構(gòu)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    MATLAB(6)--特殊矩陣

    通用的特殊矩陣 zero函數(shù):產(chǎn)生全是0矩陣,即零矩陣。 ones函數(shù):產(chǎn)生全是1矩陣,即幺矩陣。 eyes函數(shù):產(chǎn)生對角線為1的
    發(fā)表于 09-06 10:24

    MATLAB(2)--MATLAB矩陣的表示

    矩陣的建立 利用直接輸入法建立矩陣:將矩陣的元素用中括號括起來,按矩陣的順序輸入各元素,同一行的各元素之間用逗號或者空格分隔,不同的元素之間用分號分隔。 利用已建好的
    發(fā)表于 09-06 10:05

    MATLAB中的矩陣索引

    矩陣進行索引是從矩陣中選擇或修改部分元素的一種方式。MATLAB 有幾種索引樣式,它們不僅功能強大、靈活,而且可讀性強、表現(xiàn)力強。矩陣是 MATLAB 用來組織和分析數(shù)據(jù)的一個核心組件,索引是以可理解的方式有效操作
    的頭像 發(fā)表于 09-05 09:28 ?191次閱讀
    MATLAB中的<b class='flag-5'>矩陣</b>索引

    單片機接矩陣鍵盤GPIO應該怎么設置?是用上拉輸出或輸入模式嗎?

    單片機接矩陣鍵盤GPIO應該怎么設置?是用上拉輸出或輸入模式嗎?
    發(fā)表于 05-11 08:38

    stop mode下怎么實現(xiàn)按下矩陣鍵盤的任意鍵將系統(tǒng)喚醒?

    請問有沒有大佬知道stop mode下怎么實現(xiàn)按下矩陣鍵盤的任意鍵將系統(tǒng)喚醒?用WAKEUP 能實現(xiàn)嗎?
    發(fā)表于 05-06 07:08

    變壓器輸出電壓是否可以隨意調(diào)低?

    變壓器輸出電壓是否可以隨意調(diào)低? 變壓器輸出電壓的調(diào)整是通過改變輸入電壓或改變變壓器的線圈比例來實現(xiàn)的。雖然從理論上來說,可以通過相應的方式調(diào)整變壓器輸出電壓,但在實際應用中卻有一些
    的頭像 發(fā)表于 02-02 09:36 ?1408次閱讀

    無縫高清矩陣切換器和傳統(tǒng)的矩陣切換器有什么區(qū)別?

    。 分辨率調(diào)節(jié):無縫高清矩陣切換器可以固定分辨率,也可以設置每個端口的分辨率都不一樣,更具靈活性。相比之下,傳統(tǒng)矩陣切換器的分辨率調(diào)整存在限制,例如在輸入和輸出設備分辨率不同時,可能只能選擇兩者中較低的分辨率
    的頭像 發(fā)表于 01-24 14:38 ?349次閱讀

    協(xié)方差矩陣和相關(guān)系數(shù)矩陣的轉(zhuǎn)化

    協(xié)方差矩陣和相關(guān)系數(shù)矩陣是統(tǒng)計學中常用的概念,在多變量統(tǒng)計分析中起著至關(guān)重要的作用。 在進行多變量統(tǒng)計分析時,我們通常會涉及多個變量之間的關(guān)系和相互作用。協(xié)方差矩陣和相關(guān)系數(shù)矩陣就是用
    的頭像 發(fā)表于 01-12 11:02 ?1358次閱讀

    矩陣led掃描頻率怎么調(diào)

    矩陣LED掃描頻率是指LED矩陣在單位時間內(nèi)刷新顯示的次數(shù)。LED矩陣是由多個發(fā)光二極管(LED)組成的顯示設備,通過掃描控制來實現(xiàn)各個LED的亮滅,從而顯示出不同的圖像或信息。調(diào)整矩陣
    的頭像 發(fā)表于 01-02 17:30 ?1015次閱讀

    多輸入單輸出的系統(tǒng),噪聲系數(shù)應該怎么算?

    元旦前,有號友問了一個問題,就是,多輸入單輸出的系統(tǒng),噪聲系數(shù)應該怎么算
    的頭像 發(fā)表于 01-02 14:46 ?1060次閱讀
    多輸入單<b class='flag-5'>輸出</b>的系統(tǒng),噪聲系數(shù)應該怎么算<b class='flag-5'>呢</b>?

    混合矩陣是干什么用的?高清混合矩陣怎么使用?

    混合矩陣是干什么用的?高清混合矩陣怎么使用? 混合矩陣(confusion matrix),也被稱為錯誤矩陣(error matrix),是用來評估分類模型性能的一種工具。它可以對分類
    的頭像 發(fā)表于 12-04 14:40 ?899次閱讀

    IP交換矩陣的關(guān)鍵參數(shù) IP交換矩陣測試原理概述

    IP交換矩陣是由一級或多級交換設備及其控制器組成的單體矩陣,包含媒體業(yè)務信號、控制指令信號、同步時鐘信號三個平面。
    的頭像 發(fā)表于 12-04 14:13 ?2565次閱讀
    IP交換<b class='flag-5'>矩陣</b>的關(guān)鍵參數(shù) IP交換<b class='flag-5'>矩陣</b>測試原理概述

    電源是如何影響放大電路的輸出噪聲的

    電源是如何影響放大電路的輸出噪聲的? 電源對于放大電路的輸出噪聲有著非常重要的影響。電路中的噪聲可以來源于多個方面,包括器件本身的熱噪聲、器件內(nèi)部的電磁干擾、電源本身的噪聲以及其它外部環(huán)境噪聲等
    的頭像 發(fā)表于 11-06 11:14 ?624次閱讀

    音頻矩陣如何連接功放 音視頻矩陣的技術(shù)原理

    連接音頻輸入源。音頻輸入源可以是任何具有音頻輸出的設備,例如CD播放器、電視機、電腦等。使用標準音頻線纜將這些設備連接到音頻矩陣的輸入端口。
    的頭像 發(fā)表于 11-03 17:05 ?1465次閱讀

    請問單片機矩陣鍵盤無法實現(xiàn)多位輸入?

    就是矩陣鍵盤設置后,比如要輸入4567,結(jié)果輸入4,就變成4444,輸入5就變成5555這樣的情況,求解答???
    發(fā)表于 10-23 08:02