c语言数字转圈

数字转圈

|------|---|---|---|
| 题干 | 输入整数 N(1≤N≤9),输出如下 N 阶方阵。 若输入5显示如下方阵: * 1** 2** 3** 4** 5* *16**17**18**19** 6* *15**24**25**20** 7* *14**23**22**21** 8* *13**12**11**10** 9* |||
| 输入样例 | 3 |||
| 输出样例 | * 1** 2** 3* * 8** 9** 4* * 7** 6** 5* |||

思路:

代码:

cpp 复制代码
#define M 9
#include<stdio.h>
void Print(int a[M][M],int n) {
	int i,j;
	for (i = 0; i < n; i++) {
		for (j = 0; j < n; j++) {
			printf("*%2d*", a[i][j]);
		}
		printf("\n");
	}
}
void fz(int a[M][M], int n) {
	int k, hang = 0, lie = 0, hangt, liet, fx=0, wy[4][2] = { {0,1},{1,0},{0,-1},{-1,0} };
	for (k = 1; k <= n*n; k++) {
		a[hang][lie] = k;
		hangt = hang + wy[fx][0];
		liet = lie + wy[fx][1];
		if (hangt >= n || liet >= n || hangt < 0 || liet < 0 || a[hangt][liet] != 0) {
			fx = (fx + 1) % 4;
			hangt = hang + wy[fx][0];
			liet = lie + wy[fx][1];
		}
		hang = hangt;
		lie = liet;
	}
}
int main() {
	int a[M][M] = { 0 },n;
	scanf("%d", &n);
	fz(a, n);
	Print(a, n);
	return 0;
}
相关推荐
图码14 小时前
二分查找进阶:如何在有序数组中快速找到Upper Bound?
数据结构·算法·面试·分类·柔性数组
试剂界的爱马仕14 小时前
《古董局·终局5:潮生》第 2 章:镜子的天赋
大数据·人工智能·算法
Cthy_hy14 小时前
树状数组(BIT)进阶:差分优化实现区间修改、区间查询
数据结构·python·算法
潜创微科技15 小时前
IT68353:双DP 1.4 + HDMI 2.0 + USB‑C 三合一转 HDMI 2.0 单芯片KVM切换方案
c语言·开发语言
YsyaaabB15 小时前
ACM 模式通用代码模板
java·c++·python·算法
我命由我1234515 小时前
C++ - 面向对象 - 析构函数
android·c语言·开发语言·c++·visualstudio·visual studio·android runtime
ComputerInBook15 小时前
Euclid 几何变换——仿射(affine)变换
算法·仿射变换·几何变换
一只叁木Meow16 小时前
电商 SKU 选择器:用算法实现优雅的用户交互
前端·javascript·算法
代码中介商16 小时前
红黑树完全指南:从五条性质到完整插入删除实现
数据结构·算法
JieE21216 小时前
反转链表:从双指针到递归,吃透链表反转的核心逻辑
javascript·算法