生成连连看地图(难度:1颗星)
来源:互联网 发布:淘宝的工具吧在哪里 编辑:程序博客网 时间:2024/05/22 13:14
问题描述:
输入m和n(保证m*n是偶数),生成一个m*n的二维矩阵,其中用数字1-5来表示不同的图案,需要满足每一个数字在矩阵中出现的次数为偶数,并且是随机的。
问题分析:
- 为了要保证每个数字都是随机的,肯定要用到srand函数
- 为了要每个数字在矩阵中出现的次数是偶数,并且要控制进行的次数,最后是先产生矩阵个数的一半,然后另外一个复制前面一半的值,这样就可以保证偶数的条件
- 在做完第二步之后,我们需要进行若干次数据交换的操作,为了把数组元素打乱,看起来是一个随机的矩阵
参考代码:
#include <stdio.h>#include <stdlib.h>#include <time.h>void MySwap(int* pNum1, int* pNum2){ if (NULL == pNum1 || NULL == pNum2) return; int nTemp = *pNum1; *pNum1 = *pNum2; *pNum2 = nTemp;}int main(){ srand((unsigned int)time(NULL)); int m, n, i, j, index1, index2; printf("输入宽和高,并保证宽和高之积为偶数\n"); scanf_s("%d%d", &m, &n); if ((m * n) % 2) { printf("宽和高的积不能为奇数\n"); return 0; } int *pTemp = (int*)malloc(m * n * sizeof(int)); for (i = 0; i < m * n / 2; i++) pTemp[i] = pTemp[i + m * n / 2] = rand() % 5 + 1;//在1-5中随机分配数组 for (int i = 0; i < 100; i++)//进行100次随机打乱 { index1 = rand() % (m * n); index2 = rand() % (m * n); MySwap(&pTemp[index1], &pTemp[index2]);//随机产生两个下标并交换 } int **ppArray = (int**)malloc(m * sizeof(int*)); for (i = 0; i < m; i++) ppArray[i] = pTemp + i * n; for (i = 0; i < m; i++) { for (j = 0; j < n; j++) printf("%d ", ppArray[i][j]); printf("\n"); } free(pTemp); free(ppArray); return 0;}
运行结果:
阅读全文
2 0
- 生成连连看地图(难度:1颗星)
- VC++的随机性问题(连连看随机地图的生成)
- hdu1175(连连看)
- 连连看(BFS)
- 连连看(BFS)
- hdu1175(连连看)
- 连连看(DFS)
- 随机生成数字放入数组(难度系数:1颗星)
- xaml初学(动态生成元素【实例(生成连连看布局)】)
- (收集)C#连连看
- hdu1175连连看(BFS)
- HDU_1175 连连看(BFS)
- HDU1175 连连看(bfs)
- 连连看(广搜)
- cocos2d-x3.6 连连看随机地图实现
- MFC实现连连看二:地图的显示
- 连连看(C#版)——部分代码1
- 连连看外挂制作 —— 修改分数(1)
- Redis 数据类型之Hash类型
- Ubuntu 16.04安装Hadoop 2.7.3
- 自动化运维工具之fabric
- 新闻客户端
- 江苏科技大学“FlySpiders”本创小组组员学习记录----王澳刚
- 生成连连看地图(难度:1颗星)
- gdb使用
- 互联网加密与解密
- HCI 基础知识之一
- IOS 版 Opera 已不再更新
- 04-树6 Complete Binary Search Tree (30分)
- Java基础
- 【答疑释惑】Linux下面tcsh和bash的区别
- dp和px之间的相互转换