欢迎光临散文网 会员登陆 & 注册

螺旋矩阵递归解法:C语言实现

2023-08-18 16:47 作者:苦逼种田王  | 我要投稿

源代码如下:

#include<iostream>

using namespace std;

int num = 1;

void func( int arr[100][100], int i, int j)

{

arr[i][j] = num;

num++;

if (arr[i + 1][j] != 0 && arr[i][j + 1] != 0 && arr[i - 1][j] != 0 && arr[i][j - 1] != 0)

{

return;

}

if (arr[i][j - 1] != 0 && arr[i - 1][j] != 0 && arr[i][j + 1] == 0)

func(arr, i, j + 1);//右移

if (arr[i][j + 1] != 0 && arr[i - 1][j] != 0 && arr[i + 1][j] == 0)

func(arr, i + 1, j);//下降

if (arr[i][j + 1] != 0 && arr[i + 1][j] != 0 && arr[i][j - 1] == 0)

func(arr, i, j - 1);//左移

if (arr[i][j - 1] != 0 && arr[i + 1][j] != 0 && arr[i - 1][j] == 0)

func(arr, i - 1, j);//上升

}

int main()

{

int arr[100][100];

int n = 0;

cin >> n;


for (int i = 0; i < (n + 2); i++)

{

for (int j = 0; j < (n +2); j++)

{

if (i == 0 || i == n+1 || j ==0 || j == n+1)

{

arr[i][j] = -1;

}

else {

arr[i][j] = 0;

}

}

}

func(arr, 1, 1);

for (int i = 1; i <= n; i++)

{

for (int j = 1; j <=n; j++)

{

printf("%4d", arr[i][j]);

}

cout << endl;

}

return 0;

}

螺旋矩阵递归解法:C语言实现的评论 (共 条)

分享到微博请遵守国家法律