C演算法程式設計題(二)正螺旋

2021-09-22 07:23:25 字數 1016 閱讀 8360

程式描述:

從鍵盤輸入乙個整數(1~20)

則以該數字為矩陣的大小,把1,2,3…n*n 的數字按照順時針螺旋的形式填入其中。例如:

輸入數字2,則程式輸出:

1 24 3

輸入數字3,則程式輸出:

1 2 3

8 9 4

7 6 5

輸入數字4, 則程式輸出:

1   2   3  4

12  13  14  5

11  16  15  6

10   9   8  7

這個程式設計題大家可能都做過,算是比較經典的演算法程式設計題了,當然也有很多的實現方法,這裡我講一種。

我們先分析下,這個題目主要是輸出數字螺旋,我們可以看成是四個方向:

1,左-->右

2,上-->下

3,右-->左

4,下-->上

而且這四個方向的數字是依次遞增的,那我們可以這樣思考,整個輸出是乙個二維陣列,行和列數是一樣的,比如輸入4,那1-12就是第一圈,12-16就是第二圈,每一圈又分四個方向。

我們可以先這樣定義:

1

int num[80][80];2

inti,j;

3int rows,quan;

num陣列表示的是輸出的陣列,rows就是行列數,也就是我們輸入的值,quan表示的是螺旋的圈數,i表示的是螺旋上的數字,j等下我們程式中講,我們**可以這樣寫:

1     scanf("

%d",&rows);

2 quan=0;3

for(i=1;i<=rows*rows;quan++)

418 }

最外層的for是迴圈圈數的意思,裡面if是判斷最後一圈是不是單獨的數字,就像行數如果是3,那最後一圈就只要乙個數字9,下面四個for就是代表的上面說的四個方向。大家看下**就懂得,這裡我就不多說了。

大家可能有更好的實現方式,希望可以多多交流,

完整程式**:

執行結果:

力扣演算法題 054螺旋矩陣

1 include 000庫函式.h 2 34 我們定義p,q為當前環的高度和寬度,當p或者q為1時,5 表示最後乙個環只有一行或者一列,可以跳出迴圈。6 此題的難點在於下標的轉換,如何正確的轉換下標是解此題的關鍵,7 我們可以對照著上面的3x3的例子來完成下標的填寫,如下 8class solut...

C程式演算法題二

1.將一張百元大鈔對換成1元 5元 10元的小鈔,要求每種小鈔最少要一張,程式設計求共有多少種對換方法 include stdio.h void main printf 一共有 d種方法 n 2.雞翁一值錢五,雞母一值錢三,雞雛三值錢一,白錢買白雞。問雞翁 母 雛各幾何?輸出所有買法,每一種雞至少要...

leetcode演算法題第二題 c

給出兩個 非空 的鍊錶用來表示兩個非負的整數。其中,它們各自的位數是按照 逆序 的方式儲存的,並且它們的每個節點只能儲存 一位 數字。如果,我們將這兩個數相加起來,則會返回乙個新的鍊錶來表示它們的和。您可以假設除了數字 0 之外,這兩個數都不會以 0 開頭。definition for singly...