【上三角下三角對稱矩陣】
/* 上三角下三角對稱矩陣 說明: 上三角矩陣是矩陣在對角線以下的元素均為0,即A ij = 0,i > j,例如: 1 2 3 4 5 0 6 7 8 9 0 0 10 11 12 0 0 0 13 14 0 0 0 0 15 下三角矩陣是矩陣在對角線以上的元素均為0,即A ij = 0,i < j,例如: 1 0 0 0 0 2 6 0 0 0 3 7 10 0 0 4 8 11 13 0 5 9 12 14 15 對稱矩陣是矩陣元素對稱於對角線,例如: 1 2 3 4 5 2 6 8 8 9 3 7 10 11 12 4 8 11 13 14 5 9 12 14 15 上三角或下三角矩陣也有大部份的元素不儲存值(為0),我們可以將它們使用一維陣列來儲存以節省儲存空間,而對稱矩陣因為對 稱於對角線,所以可以視為上三角或下三角矩陣來儲存。 解法: 假設矩陣為nxn,為了計算方便,我們讓陣列索引由1開始,上三角矩陣化為一維陣列,若以列為主,其公式為: loc = n*(i-1) - i*(i-1)/2 + j化為以行為主,其公式為:loc = j*(j-1)/2 + i 下三角矩陣化為一維陣列,若以列為主,其公式為:loc = i*(i-1)/2 + j 若以行為主,其公式為:loc = n*(j-1) - j*(j-1)/2 + i 公式的導證其實是由等差級數公式得到,您可以自行繪圖並看看就可以導證出來,對於C/C++或Java等索引由0開始的語言來說,只要 將i與j各加1,求得loc之後減1即可套用以上的公式*/ #include<stdio.h> #include<stdlib.h> #define N 5 int main(void){ int arr1[N][N] = { {1,2,3,4,5}, {0,6,7,8,9}, {0,0,10,11,12}, {0,0,0,13,14}, {0,0,0,0,15} }; int arr2[N*(1+N)/2] = {0}; int i, j, loc = 0; printf("原二維矩陣: \n"); for(i = 0; i < N; i++){ for(j = 0; j < N; j++){ printf("%4d", arr1[i][j]); } printf("\n"); } printf("\n以列為主: "); for(i = 0; i < N; i++){ for(j = 0; j < N; j++){ if(arr1[i][j] != 0){ arr2[loc++] = arr1[i][j]; } } }for(i = 0; i < N*(1+N)/2; i++){ printf("%d ", arr2[i]); } printf("\n輸入索引(i, j): "); scanf("%d %d", &i, &j); loc = N * i - i * (i + 1) / 2 + j; printf("(%d, %d) = %d", i, j, arr2[loc]); printf("\n"); return 0; }
相關推薦
【上三角下三角對稱矩陣】
/* 上三角下三角對稱矩陣 說明: 上三角矩陣是矩陣在對角線以下的元素均為0,即A ij = 0,i > j,例如: 1 2 3 4 5 0 6 7 8 9 0 0 10 11 12 0 0 0 13 14 0 0 0
Brief introduction to Java String Split 【簡單介紹下Java String Split】
a-z include cte eve class some sim string arr Split is a common function in Java. It split a full string to an array based on delimeter.
Cmake新手使用日記(1)【C++11下的初體驗】
pen 如何 其他 err ++ targe 使用 可執行文件 使用教程 第一次使用Cmake,搜索了很多使用教程,包括《Cmake實踐》、《Cmake手冊》等,但是在針對最新的C++11條件下編程還是會存在一點點問題,需要實驗很多次錯誤並搜索大量文章才能解決問題。這裏
【python linux下定時任務跑】crontab -e使用
/etc/crontab 就是crontab 的配置檔案 linux 下輸入命令 crontab -l 查詢當前系統使用者設定了哪些執行任務 linux 下輸入命令 crontab -r 清空當前系統使用者設定的所有任務 linux 下輸入命令 crontab -e 編輯和設定當前系統使用者要
【Linux伺服器下開發環境搭建】安裝多個tomcat
上篇文章我們簡單介紹瞭如何在Linux環境下安裝單個的tomcat容器。 檢視如可安裝單個tomcat:https://blog.csdn.net/weixin_37519752/article/de
【leetcode 二叉樹對稱判斷】Symmetric Tree
1、題目 Given a binary tree, check whether it is a mirror of itself (ie, symmetric around its center)
上三角、下三角、對稱矩陣
com -c 分享圖片 mark ocs RoCE follow www nag 由於作者不習慣該編輯器,只是貼出上本文的截圖,詳見:https://www.yuque.com/docs/share/58600c72-cbca-4915-acab-a913896adcf2
4上三角、下三角、對稱矩陣
說明 上三角矩陣是矩陣在對角線以下的元素均為0,即Aij = 0,i > j,例如: 1 2 3 4 5 0 6 7 8 9 0 0 10 11 12 0 0 0 13 14 0
【劍指offer{19-22}】順時針列印矩陣、包含min函式的棧、棧的壓入彈出序列、從上往下列印二叉樹
順時針列印矩陣、包含min函式的棧、棧的壓入彈出序列、從上往下列印二叉樹 順時針列印矩陣 題目描述 輸入一個矩陣,按照從外向裡以順時針的順序依次打印出每一個數字,例如,如果輸入如下4 X 4矩陣:
2015年大二上-資料結構-陣列與廣義表(2)-4.下三角矩陣的壓縮儲存及基本運算
/* *Copyright (c) 2014,煙臺大學計算機學院 *All rights reserved. *檔名稱:Annpion.cpp *作者:王耀鵬 *完成日期:2015年12月16日 *版本號:v1.0 * *問題描述:下三角矩陣的壓縮儲存及基本運算 *輸入描述
1.1.11怎麼用一維陣列表示對稱矩陣(下三角
需要注意的是,下標為i,j的時候,表示前面有0,1,2,···,i-1行分別有1,2,···,i個元素即有i(i+1)i/2+j-1個元素在前面。所以下標為i,j的為第i(i+1)/2+j個元素。#include<stdio.h>#include<stdli
劍指offer之【從上往下打印二叉樹】
emp pub push coder 二叉 spa cti public ott 題目: 從上往下打印二叉樹 鏈接: https://www.nowcoder.com/practice/7fe2212963db4790b57431d9ed259701?tpId=13
每天一個linux命令(文件上傳下載文件操作):【轉載】tar命令
設備 mil second compress bsp 新的 body 創建 命令格式 通過SSH訪問服務器,難免會要用到壓縮,解壓縮,打包,解包等,這時候tar命令就是是必不可少的一個功能強大的工具。linux中最流行的tar是麻雀雖小,五臟俱全,功能強大。 tar
每天一個linux命令(文件上傳下載文件操作):【轉載】gzip命令
明顯 相關信息 users 版本信息 通過 inux 備份 示例 strong 減少文件大小有兩個明顯的好處,一是可以減少存儲空間,二是通過網絡傳輸文件時,可以減少傳輸的時間。gzip是在Linux系統中經常使用的一個對文件進行壓縮和解壓縮的命令,既方便又好用。gzip
【python】遠程使用rsa登錄sftp,上傳下載文件
inf dsa nbsp ica linux服務 出現 ima zed 就是 出現這個錯誤是的做法是: 將公鑰放在待遠程登錄的主機的authentication_keys文件中即可。 操作:cat id_rsa.pub << authorized_keys
將文件拖曳到窗體上, 並獲取其完整路徑 【C++ Builder下實現】轉
pat ext stc fff led CP tle 聲明 net 1. 在窗體的頭文件.h裏聲明處理函數和消息映射, 如: [cpp] view plain copy class TForm1 : public TForm {
【Web自動化測試——代碼篇八】常用方法——上傳/下載文件
.com instance timeunit 鍵盤 .sh exception lse NPU 組合 上傳文件 對於Web頁面的上傳功能實現一般有一下倆種方式: 普通上傳:將本地文件的路徑作為一個值放在input標簽中,通過form表單將這個值提交給服務器(不做介紹sen
【劍指Offer】22從上往下列印二叉樹
題目描述 從上往下打印出二叉樹的每個節點,同層節點從左至右列印。 時間限制:1秒;空間限制:32768K 解題思路 思路和層次遍歷相似,定義兩個list一個用來記錄當前層的節點,一個用來記錄當前每個節點的左右孩子節點,迴圈列印更新。 Python程式碼: # -*- codi
[18/11/16]列印上三角和下三角
1 /* 2 列印圖案 考察for迴圈的巢狀*/ 2 #include<stdio.h> 3 int main () 4 {
【劍指offer】分行從上到下列印二叉樹,層次遍歷,每一層在一行輸出
與上一篇部落格層次遍歷二叉樹不同,這次是需要將每一層列印在同一行,這就需要判斷每一層的元素: 注意到,將每一層列印完了之後,下面的一層也全部進入到了佇列,因此採用一個計數器:nextLevel來計算下一層的個數,使用toBeList計算這層還麼有列印完的個數 初始nextLevel =