#利用动态数组生成魔方矩阵

难点

  • 随机数的产生
  • 矩阵大小根据 输入确定,动态分配内存
  • 实现魔方效果

魔方效果:如果矩阵大小为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;
}

本博客内容到此为止,欢迎指正!

利用动态数组生成魔方矩阵相关推荐

  1. python去除数组缺失值_动态数组的应用,VBA中如何利用动态数组去除重复值的第二讲...

    大家好,我们今日继续讲解VBA代码解决方案的第62讲内容:在VBA中如何使用动态数组,以及利用动态数组去除重复值的方法第二部分.在上一讲中,我们讲了知识点的利用,其一是Filter函数,其二是ReDi ...

  2. c++删除数组中重复元素_在VBA中如何使用动态数组,以及利用动态数组去除重复值的方法...

    大家好,我们今日继续讲解VBA数组与字典解决方案第22讲:在VBA中如何使用动态数组,以及利用动态数组去除重复值的方法.如果文本中含有大量的重复值,此时,如果我们要剔除重复值,该怎么办?用VBA的方法 ...

  3. python生成魔方矩阵

    python生成魔方矩阵 import numpy as npdef magic(n):row, col = 0, n // 2magic = []for i in range(n):magic.ap ...

  4. vba数组如何精确筛选_第22讲:利用动态数组去除重复值的方法

    大家好,我们今日继续讲解VBA数组与字典解决方案第22讲:在VBA中如何使用动态数组,以及利用动态数组去除重复值的方法.如果文本中含有大量的重复值,此时,如果我们要剔除重复值,该怎么办?用VBA的方法 ...

  5. 实验5.2 动态内存分配生成动态数组完成矩阵转置

    题目 使用动态内存分配生成动态数组来完成矩阵转置,使用指针实现函数的功能 AC的C++代码如下: #include<iostream> using namespace std; void ...

  6. 【几种特殊的矩阵:对角矩阵、上下三角矩阵、正态分布随机矩阵、魔方矩阵、希尔伯特矩阵、托普利兹矩阵】

    (这两个最不特殊了,线代中学过不过有点忘) 1.对角矩阵:       对角矩阵(diagonal matrix)是一个主对角线之外的元素皆为0的矩阵,常写为diag(a1,a2,...,an) .对 ...

  7. 动态数组 【详解】

    0.指针    就是地址   1.指针类型: 基本类型    2.空指针类型变量:没有意义,只是一个指针空间,用于记录地址(不能运算)         void* 变量:     注:由于空间指针vo ...

  8. magic--创建魔方矩阵

    [功能简介]生成魔方矩阵.魔方矩阵是一个n×n方阵,n≥3,矩阵由1-n2中的数构成.矩阵每行.每列和两条对角线上的数之和是一样的,且等于sum(1:n^2)/n.如果n小于3,则返回的不是魔方矩阵. ...

  9. c语言中创建一个整数数组_VBA中动态数组的创建及利用方法

    大家好,后疫情时代一定会到来,各行各业,都将是一场战胜萧条的无声的战役.无论怎样,我们一定要坚信,疫情终将会过去,曙光一定会到来.后疫情时代将会是一个全新的世界,很多理念都将被打破,大多数人不会再享受 ...

  10. 数据结构与算法:动态数组(利用万能指针实现任意类型数组操作)

    原理介绍 我们利用万能指针来实现动态数组,数组元素类型可以是任意类型,因为我们只维护用户提供的数据的地址,所以可以用万能指针来接受,这样就实现了类似C++中的模板功能了. 先说说动态数组和静态数组.静 ...

最新文章

  1. Linux cp命令 拷贝文件
  2. 后台服务系统之什么是dubbo
  3. selinux= 为 disabled_「丁香园」五年没考过执医,就不要出来「为祸人间」了
  4. 8 一点就消失_农村即将消失的15个“老物件”,件件充满回忆,全认识说明你老了...
  5. 【干货】10000个抖音短视频红人通讯录.pdf(附下载链接)
  6. vue 打开html流_三种方案解决Vue项目打包后dist中的index.html用浏览器无法直接打开的问题...
  7. 以1敌10不是梦,Spring Boot企业级真实应用案例
  8. 开培训会没人来,是正常的
  9. Spring MVC笔记 使用JdbcTemplate
  10. 添加购物车功能全部代码
  11. 产品配件类目税目分类_终于找到了!“税收分类编码大全”,有这一篇就够了!...
  12. 成本更低、更优观看体验——自研S265编解码器解析
  13. 联想y7000电脑未正确启动_联想y7000wifi突然不能用了是怎么回事
  14. 独家下载!《Java工程师成神之路(基础篇)》
  15. 美国enom域名的优势
  16. 计算机语言处理器,计算机语言处理器
  17. 吃鸡手游竟然是 Python 写的?
  18. ant design vue 实现手机号 身份证 中文校验 邮箱校验
  19. Docker 入坑指南
  20. Java类初始化顺序(变量赋值与静态代码块的执行时间)

热门文章

  1. 自定义Popwindow
  2. 人狠话不多,细说大牛直播SDK之RTMP播放器和RTSP播放器...
  3. java获取局域网所有ip_java如何获取局域网内全部IP?
  4. DEA博弈交叉效率matlab,基于博弈交叉效率DEA模型的服务模块化创新绩效测量—以江西省文化创意产业为例...
  5. 像中文的罗马音字体复制_罗马音字体复制下载
  6. 手把手教你在Android中使用bsdiff实现文件增量更新 (超详细)
  7. 三菱伺服驱动器示例_三菱伺服电机伺服驱动器
  8. ROS机器人操作系统学习记录
  9. VMware+Ubuntu安装过程,含秘钥
  10. AndroidStudio测试用例合集(一)