算法-矩阵探查

算法实现

使用算法实现输出大矩形里的某一位置的小矩形
需求:
  • 实现游戏中人物动,地图移动
  • 卷积卷矩阵相乘要求等
算法原理:
本算法使用c语言实现,利用了C语言二维数组的特性:
    二位数组可以视为有行和列二维表;
本算法利用行和列的关系巧妙的输出该二维表某一个区域的小矩形
由于本人图画的不是很好,所以就没有画图
代码:
  • 输出一维数组:
void PrintArr(int* arr,int lenth){
	for(int i=0;i<lenth;i++)
		printf("%d  ",arr[i]);
	printf("\n");
} 
  • 从某一个二维数组中输出某一个矩形
/*
	矩阵输出函数 MatrixOutput(int map[][10],int x,int y,int w,int h) 
map——》基于哪个矩阵进行输出 后面的10可以根据需求更改
x,y——》输出矩阵的中心
w,h——》要输出的矩阵宽和高	
无返回值 
*/
void MatrixOutput(int map[][10],int x,int y,int w,int h){
	for(int i=0;i<h;i++){
		PrintArr(map[y-h/2+i]+x-w/2,w);
	}
}
  • 总代码(使用随机函数进行功能测试):
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void PrintArr(int* arr,int lenth){
	for(int i=0;i<lenth;i++)
		printf("%d  ",arr[i]);
	printf("\n");
} 
/*
	矩阵输出函数 MatrixOutput(int map[][10],int x,int y,int w,int h) 
map——》基于哪个矩阵进行输出 
x,y——》输出矩阵的中心
w,h——》要输出的矩阵宽和高	
无返回值 
*/
void MatrixOutput(int map[][10],int x,int y,int w,int h){
	for(int i=0;i<h;i++){
		PrintArr(map[y-h/2+i]+x-w/2,w);
	}
}
int main(){
	//定义一个10x10的大数组
	int map[10][10]={0};
	//为数组随机赋值
	srand((unsigned)time(NULL));
	for(int i=0;i<10;i++){
		for(int j=0;j<10;j++)
			map[i][j]=rand()%10;
	}printf("10x10的数组内容为:\n");
	for(int i=0;i<10;i++){
		PrintArr(map[i],10);
	}
	//输出中心4x4矩阵
	printf("中心4x4矩阵为:\n");
	MatrixOutput(map,5,5,4,4); 
}
运行结果:

在这里插入图片描述

最后:

希望以上代码对大家有所帮助😀😀😀😀

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值