利用动态数组生成魔方矩阵
#利用动态数组生成魔方矩阵
难点
- 随机数的产生
- 矩阵大小根据 输入确定,动态分配内存
- 实现魔方效果
魔方效果:如果矩阵大小为10*10,则矩阵内的100个数,为从1到100的整数不重复的随机排序。
效果如下图所示:
产生随机数
主要的两个函数。
srand(time(NULL)); //时间种子
k=rand()%(n*n); //产生随机数
更多相关应用参考下列内容:
- 对于100个随机产生的3位整数,求出它们中能够
被3整除的奇数的平均值 - C语言文件读写操作
动态矩阵
通过malloc()函数动态分配内存,n是待用户输入的值。
ge=(int **)malloc(sizeof(int)*n*n);int i;for(i=0;i<n;i++)ge[i]=(int *)malloc(sizeof(int)*n);
魔方效果
随机数产生具有随机性,所以自然产生的随机数 是可能重复的。而魔方效果要求的是 不重复
所以我们可以想到的解决方法是:
在产生随机数的时候,我们检测这个随机数是否已经产生过了,没有则记录下来,如果已经产生过了,我们要求重新产生。
好的,方法有了。具体怎么实现呢?
很明显,这重复产生随机数直到 产生出一个之前没有出现的随机数为止,这里需要一个 循环。
对于怎么知道一个随机数之前有么有产生过呢,我们需要一个标记。
对矩阵中的每个值执行系列的操作:
count[k]=1;while(count[k])k=1+rand()%(n*n);ge[i][j]=k;printf("%4d",ge[i][j]);
其中count是个int 指针,且在气count[n]以内,每个指向值都被初始化为0。
看到这里,你是否能够自己写出这个程序了呢?
这里提供参考代码如下:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>int main(){int n;printf("please input n:\n");scanf("%d",&n);srand(time(NULL));int **ge;ge=(int **)malloc(sizeof(int)*n*n);int i;for(i=0;i<n;i++)ge[i]=(int *)malloc(sizeof(int)*n);int *count;count=(int *)malloc(sizeof(int)*n*n);for(i=1;i<=n*n;i++)count[i]=0;int j,k=0;for(i=0;i<n;i++){for(j=0;j<n;j++){count[k]=1;while(count[k])k=1+rand()%(n*n);ge[i][j]=k;printf("%4d",ge[i][j]);}printf("\n");}return 0;
}
本博客内容到此为止,欢迎指正!
利用动态数组生成魔方矩阵相关推荐
- python去除数组缺失值_动态数组的应用,VBA中如何利用动态数组去除重复值的第二讲...
大家好,我们今日继续讲解VBA代码解决方案的第62讲内容:在VBA中如何使用动态数组,以及利用动态数组去除重复值的方法第二部分.在上一讲中,我们讲了知识点的利用,其一是Filter函数,其二是ReDi ...
- c++删除数组中重复元素_在VBA中如何使用动态数组,以及利用动态数组去除重复值的方法...
大家好,我们今日继续讲解VBA数组与字典解决方案第22讲:在VBA中如何使用动态数组,以及利用动态数组去除重复值的方法.如果文本中含有大量的重复值,此时,如果我们要剔除重复值,该怎么办?用VBA的方法 ...
- python生成魔方矩阵
python生成魔方矩阵 import numpy as npdef magic(n):row, col = 0, n // 2magic = []for i in range(n):magic.ap ...
- vba数组如何精确筛选_第22讲:利用动态数组去除重复值的方法
大家好,我们今日继续讲解VBA数组与字典解决方案第22讲:在VBA中如何使用动态数组,以及利用动态数组去除重复值的方法.如果文本中含有大量的重复值,此时,如果我们要剔除重复值,该怎么办?用VBA的方法 ...
- 实验5.2 动态内存分配生成动态数组完成矩阵转置
题目 使用动态内存分配生成动态数组来完成矩阵转置,使用指针实现函数的功能 AC的C++代码如下: #include<iostream> using namespace std; void ...
- 【几种特殊的矩阵:对角矩阵、上下三角矩阵、正态分布随机矩阵、魔方矩阵、希尔伯特矩阵、托普利兹矩阵】
(这两个最不特殊了,线代中学过不过有点忘) 1.对角矩阵: 对角矩阵(diagonal matrix)是一个主对角线之外的元素皆为0的矩阵,常写为diag(a1,a2,...,an) .对 ...
- 动态数组 【详解】
0.指针 就是地址 1.指针类型: 基本类型 2.空指针类型变量:没有意义,只是一个指针空间,用于记录地址(不能运算) void* 变量: 注:由于空间指针vo ...
- magic--创建魔方矩阵
[功能简介]生成魔方矩阵.魔方矩阵是一个n×n方阵,n≥3,矩阵由1-n2中的数构成.矩阵每行.每列和两条对角线上的数之和是一样的,且等于sum(1:n^2)/n.如果n小于3,则返回的不是魔方矩阵. ...
- c语言中创建一个整数数组_VBA中动态数组的创建及利用方法
大家好,后疫情时代一定会到来,各行各业,都将是一场战胜萧条的无声的战役.无论怎样,我们一定要坚信,疫情终将会过去,曙光一定会到来.后疫情时代将会是一个全新的世界,很多理念都将被打破,大多数人不会再享受 ...
- 数据结构与算法:动态数组(利用万能指针实现任意类型数组操作)
原理介绍 我们利用万能指针来实现动态数组,数组元素类型可以是任意类型,因为我们只维护用户提供的数据的地址,所以可以用万能指针来接受,这样就实现了类似C++中的模板功能了. 先说说动态数组和静态数组.静 ...
最新文章
- Linux cp命令 拷贝文件
- 后台服务系统之什么是dubbo
- selinux= 为 disabled_「丁香园」五年没考过执医,就不要出来「为祸人间」了
- 8 一点就消失_农村即将消失的15个“老物件”,件件充满回忆,全认识说明你老了...
- 【干货】10000个抖音短视频红人通讯录.pdf(附下载链接)
- vue 打开html流_三种方案解决Vue项目打包后dist中的index.html用浏览器无法直接打开的问题...
- 以1敌10不是梦,Spring Boot企业级真实应用案例
- 开培训会没人来,是正常的
- Spring MVC笔记 使用JdbcTemplate
- 添加购物车功能全部代码
- 产品配件类目税目分类_终于找到了!“税收分类编码大全”,有这一篇就够了!...
- 成本更低、更优观看体验——自研S265编解码器解析
- 联想y7000电脑未正确启动_联想y7000wifi突然不能用了是怎么回事
- 独家下载!《Java工程师成神之路(基础篇)》
- 美国enom域名的优势
- 计算机语言处理器,计算机语言处理器
- 吃鸡手游竟然是 Python 写的?
- ant design vue 实现手机号 身份证 中文校验 邮箱校验
- Docker 入坑指南
- Java类初始化顺序(变量赋值与静态代码块的执行时间)
热门文章
- 自定义Popwindow
- 人狠话不多,细说大牛直播SDK之RTMP播放器和RTSP播放器...
- java获取局域网所有ip_java如何获取局域网内全部IP?
- DEA博弈交叉效率matlab,基于博弈交叉效率DEA模型的服务模块化创新绩效测量—以江西省文化创意产业为例...
- 像中文的罗马音字体复制_罗马音字体复制下载
- 手把手教你在Android中使用bsdiff实现文件增量更新 (超详细)
- 三菱伺服驱动器示例_三菱伺服电机伺服驱动器
- ROS机器人操作系统学习记录
- VMware+Ubuntu安装过程,含秘钥
- AndroidStudio测试用例合集(一)