C語言實現矩陣螺旋輸出
C語言實現矩陣螺旋輸出
題目描述:
給定一個m行、n列的矩陣,請按照順時針螺旋的順序輸出矩陣中所有的元素(從[0][0]位置開始,具體請參見下圖):
輸入格式要求:
每次程式執行時,首先在第一行輸入2個整數,分別對應題目描述中的m和n,(1<=m, n<=100),之間用一個空格分隔。接下來輸入m行,每行包含n個整數,每兩個整數之間用一個空格分隔。
輸出格式要求:
輸出為一行,包括m*n個整數,按照題目要求的順序依次輸出所有矩陣元素,任意兩個整數之間用一個空格分隔,最後一個整數後面沒有空格。
思路:
順時針螺旋輸出的過程可以看作一系列“向右-向下-向左-向上”進行輸出的過程,只不過在這個過程中,要確保輸出過的元素不被重複地訪問和輸出。可以把每次沿著一個方向的輸出看成一個獨立過程,考慮到每沿著一個方向輸出後剩餘的待輸出部分還是一個矩陣,你也可以通過四個變數分別記錄現在還沒被輸出的矩陣的行數和列數可能的最小值、最大值。也可以用另一個等大的二維陣列來標記對應位置的數字是否已經被輸出了。
程式碼:
#include <stdio.h>
void space(int, int);
int main() {
int matrix[101][101];
int m;
int n;
int i, j;
// 輸入m*n的矩陣
scanf("%d%d", &m, &n);
for (i = 0; i < m; i++) {
for (j = 0; j < n; j++) {
scanf("%d", &matrix[i][j]);
}
}
//定義上下左右邊界,每次邊上的數後,更新周圍的值
int up = 0, left = 0, down = m-1, right = n-1;
int k, num = 0;
while (up <= down && left <= right) {
// 向右輸出
for (k = left; k <= right; k++) {
printf("%d", matrix[up][k]);
num++;
space(num, m*n);
}
up++;
if (num == m*n) //如果全部數值已經輸出完畢,退出while迴圈
break;
// 向下輸出
for (k = up; k <= down; k++) {
printf("%d", matrix[k][right]);
num++;
space(num, m*n);
}
right--;
if (num == m*n) //如果全部數值已經輸出完畢,退出while迴圈
break;
// 向左輸出
for (k = right ; k >= left; k--) {
printf("%d", matrix[down][k]);
num++;
space(num, m*n);
}
down--;
if (num == m*n) //如果全部數值已經輸出完畢,退出while迴圈
break;
// 向上輸出
for (k = down; k >= up; k--) {
printf("%d", matrix[k][left]);
num++;
space(num, m*n);
}
left++;
if (num == m*n) //如果全部數值已經輸出完畢,退出while迴圈
break;
}
return 0;
}
//判斷每次輸出數字後是否要輸出空格
void space(num, all) {
if (num < all)
printf(" ");
}
相關文章
- 用C語言輸出蛇形矩陣C語言矩陣
- c# 螺旋矩陣C#矩陣
- 螺旋矩陣矩陣
- 生成螺旋矩陣(方陣、矩陣)矩陣
- Java 實現順時針螺旋二維陣列輸出Java陣列
- 54. 螺旋矩陣矩陣
- 力扣566. 重塑矩陣-C語言實現-簡單題力扣矩陣C語言
- C語言輸入輸出C語言
- leetcode:螺旋矩陣LeetCode矩陣
- c語言實現輸出2的1000次方C語言
- 力扣-54. 螺旋矩陣力扣矩陣
- C++實現蛇形矩陣C++矩陣
- 【面試】輸出"蛇形"矩陣面試矩陣
- [Leetcode]59.螺旋矩陣ⅡLeetCode矩陣
- LeetCode 59. 螺旋矩陣 II(python、c++)LeetCode矩陣PythonC++
- C語言輸出多位小數C語言
- C語言陣列實現三子棋C語言陣列
- 6.5陣列--模擬、偏移量-螺旋矩陣陣列矩陣
- c語言中實現4行3列矩陣和3行4列矩陣的運算C語言矩陣
- 演算法學習之路|螺旋矩陣演算法矩陣
- 圖的深度遍歷(C語言)鄰接矩陣表示C語言矩陣
- 入門輸出Hello World!——C語言C語言
- R語言矩陣基礎操作R語言矩陣
- (C語言、資料結構)鄰接矩陣的初始化、邊的插入和輸出,以及鄰接矩陣的撤銷和邊的搜尋C語言資料結構矩陣
- 實驗1 C語言輸入輸出和簡單程式編寫C語言
- C 語言實現使用靜態陣列實現迴圈佇列陣列佇列
- C 語言實現使用動態陣列實現迴圈佇列陣列佇列
- 【程式碼隨想錄】一、陣列:5.螺旋矩陣陣列矩陣
- C語言陣列C語言陣列
- 實驗1_C語言輸入輸出和簡單程式編寫C語言
- Q14 LeetCode59 螺旋矩陣LeetCode矩陣
- C語言:求4x4矩陣外圍元素之和C語言矩陣
- realloc 實現隨使用者輸入自動擴充套件陣列長度(C語言)套件陣列C語言
- C語言程式設計之《資料輸出》C語言程式設計
- C語言輸入一個數輸出對應的值C語言
- 掃雷--C語言實現C語言
- C語言實現DES加密C語言加密
- c語言實現階乘C語言