下三角陣列指定規則賦值

2021-10-01 08:55:25 字數 1284 閱讀 9079

本題目為東北師範大學資訊科學與技術學院2023年碩士研究生**技術科目招生試題,由一位高中同學提供,讓我三年沒用c的又重操舊業。

題目內容:編寫程式按下面指定的資料為陣列x的下三角元素賦值,並按如下形式輸出:

3         7

2         6          9

1         5          8          10

方法一:找規律**

俗話說,找到規律最簡單,輕輕鬆鬆乙個通式就解決。

首先觀察每列,從上到下逐次減1,用巨集定義level表示這個陣列有幾行,用i、j分別表示第i行和第j列(這裡i和j從0開始)。則第i行第0列的元素可以表達為level-i

從第1列開始整列可以看作是第0列都增加某個值,第1列相比第0列增加4(level),第2列相比第0列增加4+3=7(level+level-1=2*level-1),第3列相比第0列增加4+3+2=9(level+level-1+level-2=3*level-3)……

則第j列相比第0列增加的項的第一項為j*level,第二項為0,1,2,3,....j-1之和,由通項公式得,第二項為j(j-1)/2,所以總增加為j*level+j(j-1)/2.

綜上所述,表示式可以寫為num[i][j]=level-i+level*j-j*(j-1)/2;

方法二:迴圈法

那就好整了,假設陣列一共level行,下三角陣列一共有level*(level+1)/2個,那我先初始變數index為0,用來表示每次賦值的賦值數,初始化pi為level-1,初始化pj為0,即表示當前第level-1行第j列。

然後進入while迴圈,迴圈條件為index小於level*(level+1)/2,如果大於則跳出。

在迴圈中,首先把num[pi][pj]賦值為index+1(因為從1開始),然後index自增,進行如下判斷:如果pi==pj,即當前元素在主對角線上,也就意味著到了下三角陣列該列的最頂上,則需要pi重新初始化為level-1,pj自增,否則pi自減。

**:方法一:

#include #define level 4

int main()

}} printf("\n");

}}

方法二:

#include #define level 4

int main()

}} printf("\n");

} }

演算法基礎 陣列指定規則排序問題(Golang實現)

給出乙個二維陣列,請將這個二維陣列按第i列 i從1開始 排序,如果第i列相同,則對相同的行按第i 1列的元素排序,如果第i 1列的元素也相同,則繼續比較第i 2列,以此類推,直到最後一列。如果第i列到最後一列都相同,則按原序排列。樣例輸入 1,2,3 2,3,4 2,3,1 1,3,1 按第2列排序...

上三角矩陣下三角矩陣

要求給定矩陣,輸出其上三角矩陣或下三角矩陣 源 如下 include include include include const int m 5 void proc int array m m void main printf n proc a printf result array is n fo...

C 輸出上三角 下三角 菱形 楊輝三角形

第一行1個星,第二行3個星,第三行5個星,第四行7個星,第五行9個星。分析 三角形的形狀由輸出的空白和星組成,通過分析每一行輸出幾個空格,幾個星,就可完成輸出三角形的工作。includeusing namespace std int main for j 1 j 2 i 1 j cout 第一行9個...