1. 程式人生 > >蛇形矩陣演算法及分析

蛇形矩陣演算法及分析

[問題描述]

蛇形矩陣是由1開始的自然數依次排列成的一個矩陣上三角形。

[需求分析]

1.輸入的形式

本題有多組資料,每組資料由一個正整數N組成。輸入一個正整數N

2.輸入值的範圍

N不大於100

2.輸出形式

對於每一組資料,輸出一個N行的蛇形矩陣。兩組輸出之間不要額外的空行。矩陣三角中同一行的數字用一個空格分開。行尾不要多餘的空格。

4.程式所能達到的功能

輸入一個整數N,計算排列輸出NN列的三角形矩陣。

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

,收先輸出a[0][0],定義一個for迴圈,用語句a[i+1][0]=a[i][0]+i+1;來得出每一列的數字,但不輸出,再定義一個for迴圈用語句a[i][j+1]=a[i][j]+j+i+2;得出每一行的數字,然後用printf輸出每一行的數字

[完整程式]

#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實現

排序是我們在面試和筆試中經常會用到的知識,所有有必要專門來整理總結一下。   排序大的分類可以分為兩種:內排序和外排序。在排序過程中,全部記錄存放在記憶體,則稱為內排序,如果排序過程中需要使用外存,則稱為外排序。下面講的排序都是屬於內排序。   內排序有可以分為以下幾類: