算法大题,思路和代码都在上面了,拿走拿走
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define N 3
int main()
{
int a[N][N] = {0};//初始化
int count = 1; //初始化位置
int row = 0, cul = N / 2; //初始化位置
while (count <= N*N) //
{
a[row][cul] = count; //在0 1的位置上
int i = row;
int j = cul;
if (i == 0){ //如果是位于第一行,则要找最后一行
i = N - 1;
}
else{ //如果不是,就直接找上一行
i = i - 1;
}
j = (j + 1) % N; //膜除的时候就可以实现在边缘的加一 减一 这是在操作列
//⑸如果按上面规则确定的位置上已有数,或上一个数是第一行第n列时,则把下一个数放在上一个数的下面。
if (a[i][j]!=0||(row==0&&cul==N-1)){
i = row + 1;
j = cul;
}
row = i;
cul = j;
count++;//数+1