在C程式中列印給定大小的最大和正方形子矩陣
給定一個 NxN 的矩陣,找出一個 MxM 的子矩陣,其中 M=1,使得矩陣 MxM 的所有元素總和最大。矩陣 NxN 的輸入可以包含零、正整數、負整數值。
範例
Input: {{1, 1, 1, 1, 1}, {2, 2, 2, 2, 2}, {3, 3, 3, 3, 3}, {4, 4, 4, 4, 4}, {5, 5, 5, 5, 5} } Output: 4 4 5 5
上面的問題可以透過一個簡單的解決方案來解決,我們可以取整個矩陣NxN,然後找出所有可能的MxM矩陣並求出它們的和,然後列印具有最大和的MxM 矩陣。這種方法很簡單,但需要 O(N^2.M^2) 時間複雜度,因此我們嘗試找出時間複雜度較小的方法。
演算法
Start Step 1 -> Declare Function void matrix(int arr[][size], int k) IF k>size Return Declare int array[size][size] Loop For int j=0 and j<size and j++ Set sum=0 Loop for int i=0 and i<k and i++ Set sum=sum + arr[i][j] End Set array[0][j]=sum Loop For int i=1 and i<size-k+1 and i++ Set sum=sum+(arr[i+k-1]][j]-arr[i-1][j] Set arrayi][j]=sum End Set int maxsum = INT_MIN and *pos = NULL Loop For int i=0 and i<size-k+1 and i++) Set int sum = 0 Loop For int j = 0 and j<k and j++ Set sum += array[i][j] End If sum > maxsum Set maxsum = sum Set pos = &(arr[i][0]) End Loop For int j=1 and j<size-k+1 and j++ Set sum += (array[i][j+k-1] - array[i][j-1]) IF sum > maxsum Set maxsum = sum Set pos = &(arr[i][j]) End End End Loop For int i=0 and i<k and i++ Loop For int j=0 and j<k and j++ Print *(pos + i*size + j) End Print </p><p> End Step 2 -> In main() Declare int array[size][size] = {{1, 1, 1, 1, 1}, {2, 2, 2, 2, 2}, {3, 3, 3, 3, 3}, {4, 4, 4, 4, 4}, {5, 5, 5, 5, 5}} Declare int k = 2 Call matrix(array, k) Stop
範例
#include <bits/stdc++.h> using namespace std; #define size 5 void matrix(int arr[][size], int k){ if (k > size) return; int array[size][size]; for (int j=0; j<size; j++){ int sum = 0; for (int i=0; i<k; i++) sum += arr[i][j]; array[0][j] = sum; for (int i=1; i<size-k+1; i++){ sum += (arr[i+k-1][j] - arr[i-1][j]); array[i][j] = sum; } } int maxsum = INT_MIN, *pos = NULL; for (int i=0; i<size-k+1; i++){ int sum = 0; for (int j = 0; j<k; j++) sum += array[i][j]; if (sum > maxsum){ maxsum = sum; pos = &(arr[i][0]); } for (int j=1; j<size-k+1; j++){ sum += (array[i][j+k-1] - array[i][j-1]); if (sum > maxsum){ maxsum = sum; pos = &(arr[i][j]); } } } for (int i=0; i<k; i++){ for (int j=0; j<k; j++) cout << *(pos + i*size + j) << " "; cout << endl; } } int main(){ int array[size][size] = { {1, 1, 1, 1, 1}, {2, 2, 2, 2, 2}, {3, 3, 3, 3, 3}, {4, 4, 4, 4, 4}, {5, 5, 5, 5, 5}, }; int k = 2; matrix(array, k); return 0; }
輸出
#如果我們執行上面的程序,那麼它將產生以下輸出
4 4 5 5
以上是在C程式中列印給定大小的最大和正方形子矩陣的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

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

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

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

Dreamweaver CS6
視覺化網頁開發工具

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

熱門話題

如果在開啟一份需要列印的文件時,在列印預覽裡我們會發現表格框線不知為何消失不見了,遇到這樣的情況,我們就要及時進行處理,如果你的列印文件裡也出現了此類的問題,那麼就和小編一起來學習下邊的課程吧:excel列印表格框線消失怎麼辦? 1.開啟一份需要列印的文件,如下圖所示。 2、選取所有需要的內容區域,如下圖所示。 3、按滑鼠右鍵,選擇「設定儲存格格式」選項,如下圖所示。 4、點選視窗上方的「邊框」選項,如下圖所示。 5、在左側的線條樣式中選擇細實線圖樣,如下圖所示。 6、選擇“外邊框”

本文將介紹如何解決MicrosoftWord中出現的記憶體或磁碟空間不足以重新分頁或列印文件的問題。這種錯誤通常會在使用者嘗試列印Word文件時出現。如果您遇到類似的錯誤,請參考本文提供的建議來解決。記憶體或磁碟空間不足,無法重新分頁或列印此文件Word錯誤解決MicrosoftWord列印錯誤「沒有足夠記憶體或磁碟空間重新分頁或列印文件」的方法。更新MicrosoftOffice關閉佔用記憶體的應用程式更改您的預設印表機在安全模式下啟動Word重命名NorMal.dotm檔案將Word檔案儲存為另一

在這個數位化的世界中,列印頁面的需求並沒有消失。儘管您可能認為在電腦上保存內容並直接發送到印表機更為便捷,但是您同樣可以在iPhone上完成相同的操作。透過iPhone的相機,您可以拍攝照片或文檔,並且還可以直接儲存文件以便隨時列印。這樣一來,您可以快速方便地將您所需的資訊實體化,並將其保存在紙本文件中。無論是在工作還是日常生活中,iPhone為您提供了一個便攜式的列印解決方案。以下貼文將幫助您了解如果您希望使用iPhone在印表機上列印頁面,您需要了解的所有資訊。從iPhone列印:要求蘋

如果您在Windows11/10中無法使用截圖工具進行列印,可能是由於系統檔案損壞或驅動程式問題導致的。本文將為您提供解決此問題的方法。在Windows11/10中無法從截圖工具列印如果您無法從Windows11/10中的SnippingTool列印,請使用這些修復程式:重新啟動PC印表機清除列印佇列更新印表機和顯示卡驅動程式修復或重設剪裁工具執行SFC和DISM掃描使用PowerShell指令卸載並重新安裝截圖工具。我們開始吧。 1]重新啟動您的PC和印表機重新啟動電腦和印表機有助於消除暫時的故障

錯誤地列印了一個大文件?需要停止或暫停列印以節省墨水和紙張嗎?在許多情況下,您可能需要暫停Windows11裝置上正在進行的列印作業。如何在Windows11中暫停列印?在Windows11中,暫停列印會暫停列印作業,但並不會取消列印任務。這為用戶提供了更靈活的控制權。有三種方法可以實現這一點:使用工作列暫停列印使用Windows設定暫停列印使用控制面板列印現在,讓我們來詳細看看這些。 1]使用工作列列印右鍵點選工作列上的列印佇列通知。按一下開啟所有活動印表機選項。在這裡,右鍵列印作業並選擇全部暫停

如果您發現在使用Word列印郵件合併文件時出現空白頁,這篇文章將對您有所幫助。郵件合併是一項便捷的功能,讓您能夠輕鬆建立個人化文件並傳送給多個收件者。在MicrosoftWord中,郵件合併功能備受推崇,因為它能夠幫助使用者節省手動為每個收件者複製相同內容的時間。為了列印郵件合併文檔,您可以轉到郵件標籤。但有些Word使用者反映,在嘗試列印郵件合併文件時,印表機會列印空白頁或完全不列印。這可能是由於格式設定不正確或印表機設定問題。嘗試檢查文檔和印表機設置,確保列印前預覽文檔,以確保內容正確。如果

Outlook是功能最豐富的電子郵件用戶端之一,已成為專業交流不可或缺的工具。其中一個挑戰是在Outlook中同時列印所有附件。通常需要逐個下載附件才能列印,但如果想一次列印所有內容,這就是大多數人遇到的問題。如何列印Outlook中的所有附件儘管大部分資訊是在Outlook應用程式中線上維護的,但有時需要將資訊列印出來備份。必須親自簽署文件,以滿足合約、政府表格或家庭作業等法律要求。有幾種方法可以讓您一次點擊列印Outlook中的所有附件,而不是逐一列印。讓我們詳細地看看每一個。 Outloo

如何在Vue中實現列印功能,需要具體程式碼範例Vue.js是一種用於建立使用者介面的漸進式JavaScript框架。在許多Web應用程式中,列印功能是非常重要的一部分。本文將介紹如何在Vue中實現列印功能,並提供具體的程式碼範例。在Vue中實現列印功能,首先要明確列印的內容是什麼。通常,我們會將要列印的內容放在一個HTML元素中,例如一個div。然後,透過Jav
