程式描述:
從鍵盤輸入乙個整數(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就是第二圈,每一圈又分四個方向。
我們可以先這樣定義:
1num陣列表示的是輸出的陣列,rows就是行列數,也就是我們輸入的值,quan表示的是螺旋的圈數,i表示的是螺旋上的數字,j等下我們程式中講,我們**可以這樣寫:int num[80][80];2
inti,j;
3int rows,quan;
1 scanf("最外層的for是迴圈圈數的意思,裡面if是判斷最後一圈是不是單獨的數字,就像行數如果是3,那最後一圈就只要乙個數字9,下面四個for就是代表的上面說的四個方向。大家看下**就懂得,這裡我就不多說了。%d",&rows);
2 quan=0;3
for(i=1;i<=rows*rows;quan++)
418 }
大家可能有更好的實現方式,希望可以多多交流,
完整程式**:
執行結果:
力扣演算法題 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...