使用C程式列印n x n的螺旋矩陣,使用O(1)額外空間
給定一個正整數n,並建構一個n x n 的螺旋矩陣,僅在順時針方向上使用O(1) 額外空間
螺旋矩陣是一個像螺旋一樣工作的矩陣,它將開始從圓的原點開始,順時針方向旋轉。因此,任務是使用從 2 → 4 → 6 → 8 → 10 → 12 → 14 → 1 6→ 18 開始的 O(1) 空間以螺旋形式列印矩陣。
下面是範例螺旋矩陣-
範例
Input: 3 Output: 9 8 7 2 1 6 3 4 1
登入後複製
解決具有無限空間的程式碼變得很容易,但這並不像最佳程式那樣有效,或者程式碼在記憶體和時間上都是有效的。因此,為了保持螺旋順序,使用了四個循環,每個循環用於矩陣的上、右、下和左角,但是如果我們將矩陣分為兩部分,即右上角和左下角,我們可以直接使用這個概念
< p>對於右上半部分,mat[i][j] = (n-2*x)*(n-2*x)-(i-x)-(j-x)
登入後複製
對於左下半部分,
mat[i][j] = (n-2*x-2)*(n-2*x-2) + (i-x) + (j-x)
登入後複製
注意-我們正在編寫用於列印2的矩陣倍數的程式
演算法
int spiralmatrix(int n) START STEP 1: DECLARE i, j, a, b, x STEP 2: LOOP FOR i = 0 AND i < n AND i++ LOOP FOR j = 0 AND j < n AND j++ FIND THE MINIMUM IN (i<j ) AND ASSIGN IT TO a FIND THE MINIMUM (n-1-i) < (n-1-j) AND ASSIGN IT TO b THEN ASSIGN THE LEAST VALUE FROM a AND b TO x IF i <= j THEN, PRINT THE VALUE OF 2* ((n-2*x)*(n-2*x) - (i-x) - (j-x)) ELSE PRINT THE VALUE OF 2*((n-2*x-2)*(n-2*x2) + (i-x) + (j-x)) END LOOP PRINT NEWLINE END LOOP STOP
登入後複製
範例
#include <stdio.h> //For n x n spiral matrix int spiralmatrix(int n){ int i, j, a, b, x; // x stores the layer in which (i, j)th element exist for ( i = 0; i < n; i++){ for ( j = 0; j < n; j++){ // Finds minimum of four inputs a = ((i<j ? i : j)); b = ((n-1-i) < (n-1-j) ? (n-1-i) : (n-1-j)); x = a < b ? a : b; // For upper right half if (i <= j) printf("%d\t ", 2 * ((n-2*x)*(n-2*x) - (i-x) - (j-x))); // for lower left half else printf("%d\t ", 2*((n-2*x-2)*(n-2*x-2) + (i-x) + (j-x))); } printf("</p><p>"); } } int main(int argc, char const *argv[]){ int n = 3; spiralmatrix(n); return 0; }
登入後複製
輸出
如果我們執行上面的程序,那麼它將產生以下輸出-
18 16 14 4 2 12 6 8 10
登入後複製
以上是使用C程式列印n x n的螺旋矩陣,使用O(1)額外空間的詳細內容。更多資訊請關注PHP中文網其他相關文章!
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章
R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
2 週前
By 尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
4 週前
By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前
By 尊渡假赌尊渡假赌尊渡假赌
擊敗分裂小說需要多長時間?
3 週前
By DDD
R.E.P.O.保存文件位置:在哪里以及如何保護它?
3 週前
By DDD

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)