蛇形矩陣演算法及分析
[問題描述]
蛇形矩陣是由1開始的自然數依次排列成的一個矩陣上三角形。
[需求分析]
1.輸入的形式
本題有多組資料,每組資料由一個正整數N組成。輸入一個正整數N。
2.輸入值的範圍
N不大於100。
2.輸出形式
對於每一組資料,輸出一個N行的蛇形矩陣。兩組輸出之間不要額外的空行。矩陣三角中同一行的數字用一個空格分開。行尾不要多餘的空格。
4.程式所能達到的功能
輸入一個整數N,計算排列輸出N行N列的三角形矩陣。
5.測試資料
輸入5,輸出1 3 6 10 15 2 5 9 14 4 8 13 7 12 11。
[概要分析]
定義一個數組a[100][100],定義一個while迴圈,輸入N,輸入的N為空格則跳出迴圈,初始化陣列a[0][0]=1
[完整程式]
#include<stdio.h>
int main()
{
int N,i,j,a[100][100];
while(scanf("%d",&N)!=EOF)
{
a[0][0]=1;
printf("%d",a[0][0]);
for(i=0;i<N-1;i++)//執行完一次for{}迴圈以後i才自增
{
a[i+1][0]=a[i][0]+i+1;
for(j=0;j<N-i-1;j++)
{
a[i][j+1]=a[i][j]+j+i+2;
printf(" %d",a[i][j+1]);
}
printf("\n%d",a[i+1][0]);
}
}
printf("\n");
return 0;
}
[除錯分析]
除錯的值要在陣列定義的範圍內,否則會輸出錯誤。
[使用說明]
執行環境VC6.0
[測試結果]
相關推薦
蛇形矩陣演算法及分析
[問題描述]蛇形矩陣是由1開始的自然數依次排列成的一個矩陣上三角形。[需求分析]1.輸入的形式本題有多組資料,每組資料由一個正整數N組成。輸入一個正整數N。2.輸入值的範圍N不大於100。2.輸出形式對於每一組資料,輸出一個N行的蛇形矩陣。兩組輸出之間不要額外的空行。矩陣三角
從零開始Rtklib解讀篇-簡單的程式設計理論和演算法及結構分析(四)
首先我們來說一說VS常用的除錯技巧,比較常用的內容我會寫在下面。 1、斷點。我就不細說了。 2、條件斷點,在斷點上右鍵,彈出的選單可以選擇條件設定,在找一些問題的時候會比較快一點。我有時會配合靜態變數強行搜尋到error發生前。 3、檢視指標值,監視視窗輸入,比如p,3 ,即可檢視p
從零開始Rtklib解讀篇-簡單的程式設計理論和演算法及結構分析(三)
1. argc和argv argc和argv中的arg指的是"引數",首先是一個計算提供的引數到程式,第二個是對字串陣列的指標 argc: 整數,用來統計你執行程式時送給main函式的命令列引數的個數 * argv[ ]: 字串陣列,用來存放指向你
從零開始Rtklib解讀篇-簡單的程式設計理論和演算法及結構分析(二)
從bin裡進入。主進入方式為RTKLAUNCH.exe 第一個RTKPLOT右上角的小方塊可以勾選NormalAPs,RTKPOST_MKL,RTKPOST_WIN64, Minimize等選項。通常是第一個。另外64位系統下通常也是選用NormalAPs,RTKPOST_WIN
從零開始Rtklib解讀篇-簡單的程式設計理論和演算法及結構分析(一)
Rtklib一直開源,資源比較容易找到,功能也非常強大。因為專業有點相關,但是之前不用這個平臺,一直未能好好沉下心來學習,然而學到用時方恨少。這個系列也算是自己的一個小小的總結吧,因為我對VS、對Rtklib、對演算法的理解也比較淺,很多內容未必正確,寫的時候也不一定非常有條理,不當之處,還請指出並
洪澇有源淹沒演算法及淹沒結果分析
洪澇模擬模擬的實現方法主要有兩種:一種是基於水動力學的洪水演進模型;另一種是基於DEM的洪水淹沒分析。具體分析如下: 我是GIS從業者,從我們的專業角度出發,選擇基於DEM的洪水淹沒分析來做洪澇的模擬模擬。而基於DEM的洪水淹沒分析方法主要分為有源淹沒和無源淹沒。 本篇部落格採用有源淹沒演算
PageRank 演算法及例項分析
本文一部分是針對圖的PageRank 的實現,以及具體資料集的分析過程的記錄。 另一部分是BFS的實現,並記錄每一層的節點數。 資料集下載地址 soc-Slashdot0811 、 roadNet-CA 、 soc-LiveJournal1 1. java 實現程式碼 M
演算法競賽入門例題蛇形矩陣填充
蛇形填數。在n×n方陣裡填入1,2,…,n×n,要求填成蛇形。例如,n=4時方陣為: 1011121 9 16132 8 15143 7 6 5 4 上面的方陣中,多餘的空格只是為了便於觀察規律,不必嚴格輸出。n≤8。 單純覺得書上這寫法比我的for簡潔多了。。自己實現記錄一下。。奧妙啊
矩陣轉置演算法及程式碼實現(三元組順序表)
矩陣的轉置實際上就是將資料元素的行標和列標互換,即 T(i,j) = M(j,i) 。例如: 圖1 矩陣的轉置 相應地,三元組錶轉變為: 圖2 三元組表 矩陣的轉置,經歷了三個步驟: 矩陣的行數 n 和列數 m 的值交換; 將三元組中的i和j調換; 轉換之後的表同樣按照行序(置換前的列序
排序演算法:希爾排序演算法實現及分析
希爾排序演算法介紹希爾排序是D.LShell 與1957年提出來的一種排序演算法,在這之前排序演算法的時間複雜度都是O(n^2),希爾排序演算法是突破這個時間複雜度的第一批演算法之一。我們知道直接插入排序演算法(不知道的請看:排序演算法:直接插入排序演算法實現及分析),在某些
八大排序演算法及時間空間複雜度分析,java版
//放在一起感覺又臭又長,所以每排序我單獨放出來了,歡迎大家平均交流指出不足import java.lang.reflect.Array;import java.util.*;public class EightKindOfSort {/*選擇排序 (不穩定演算法) *
八大排序——氣泡排序的優化演算法及效能分析(C語言)
穩定性:氣泡排序就是把小的元素往前調或者把大的元素往後調。比較是相鄰的兩個元素比較,交換也發生在這兩個元素之間。所以,如果兩個元素相等,是不必再去交換的;如果兩個相等的元素沒有相鄰,那麼即使通過前面的兩兩交換把兩個相鄰起來,這時候也不會交換,所以相同元素的前後順序並沒有改變,所以氣泡排序是一種穩定排序演算法。
插入排序演算法python實現及分析
本文主要討論插入排序演算法解決n個數字自小到大的排序,及分析最壞情況和平均情況(複雜度)。 假設我們有一個n個數,要把它們按升序排序。按照我個人的思維最笨的辦法就是先掃描一遍(一個迭代),找出最小數,然後在剩餘的數字中,再找出最小的數字,按照這種方法到排序下去,最
netty原始碼分析(十六)Channel選擇器工廠與輪詢演算法及註冊底層實現
上一節說到註冊的入口,即 MultithreadEventLoopGroup: public ChannelFuture register(Channel channel) { return next().register(chann
排序演算法及並行分析
最近學了高效能運算這門課程,老師讓用OpenMP、MPI或mapReduce寫個大作業。我之前剛好在寫排序,於是我就將常用的排序寫了一遍並且用OpenMP進行並行,計算加速比等資料進行分析。在這篇文章中我主要介紹八大基本排序的實現原理及程式碼,以及對這些演算法進行改進從而讓它
快速排序演算法及時間複雜度分析(原地in-place分割槽版本)
快速排序演算法一般來說是採用遞迴來實現,其最關鍵的函式是partition分割函式,其功能是將陣列劃分為兩部分,一部分小於選定的pivot,另一部分大於選定的pivot。我們將重點放在該函式上面。 partition函式總體思路是自從一邊查詢,找到小於pivot的元素,則將
最短路徑之Dijkstra演算法及例項分析
Dijkstra演算法迪科斯徹演算法 Dijkstra演算法描述為:假設用帶權鄰接矩陣來表示帶權有向圖。首先引進一個輔助向量D,它的每個分量D[i]表示當前所找到的從始點v到每個終點Vi的最短路徑。它的初始狀態為:若兩頂點之間有弧,則D[i]為弧上的權值;否則置D[i]為無
編譯原理(七) 算符優先分析法(構造算符優先關係表演算法及C++實現)
概念簡述 移動歸約分析法:自底向上的語法分析方法,也稱為移動歸約分析法。 最易於實現的一種移動歸約分析方法,叫做算符優先分析法, 而更一般的移動歸約分析方法叫做LR分析法,LR分析法可以用作許多自動的語法分析器的生成器。 短語:文法G[S],αβδ是文
Python機器學習庫sklearn幾種迴歸演算法建模及分析(實驗)
最簡單的迴歸模型就是線性迴歸 資料匯入與視覺化分析 from IPython.display import Image %matplotlib inline # Added version che
各種排序演算法的分析及java實現
排序是我們在面試和筆試中經常會用到的知識,所有有必要專門來整理總結一下。 排序大的分類可以分為兩種:內排序和外排序。在排序過程中,全部記錄存放在記憶體,則稱為內排序,如果排序過程中需要使用外存,則稱為外排序。下面講的排序都是屬於內排序。 內排序有可以分為以下幾類: