天生棋局(堆上申请二维空间的应用)

Posted wangchaomahan

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了天生棋局(堆上申请二维空间的应用)相关的知识,希望对你有一定的参考价值。

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 /*
 4     天生棋局
 5 */
 6 #define N 10
 7 //1.传入一个n在堆空间中产生n*n方格的棋盘(生成一个n*n的二维空间)
 8 int **createboard(int n)
 9 {
10     int **p = (int **)malloc(n*sizeof(int*));
11     for(int i = 0;i<n;i++)
12     {
13         p[i] = (int *)malloc(n*sizeof(int));
14     }
15     
16     return p;
17 }
18 //2.N颗棋子随机落在棋盘上<需要防止落在同一位置上>
19 void initboard(int **p,int n)
20 {
21     int i,j;
22     
23     i = rand()%N;
24     j = rand()%N;
25     p[i][j] = x;
26     n -= 1;
27     while(n--)
28     {
29         
30         i = rand()%N;
31         j = rand()%N;
32         while(p[i][j] == x)
33         {
34             i = rand()%N;
35             j = rand()%N;
36         }
37         p[i][j] = x;    
38     }
39 }
40 //3.打印棋盘,没旗子的用o表示,有棋子的用X表示
41 void printboard(int **p)
42 {
43     int i,j;
44     
45     for(i = 0;i<N;i++)
46     {
47         for(j = 0;j<N;j++)
48         {
49             if(p[i][j] == x)
50                 printf("%c	",p[i][j]);
51             else
52                 printf("%c	",o);
53         }
54         putchar(10);
55     }
56 }
57 int main(void)
58 {
59     int ** p = createboard(N);//生成N*N二维空间
60     initboard(p,20);//随机放入20个棋子
61     printboard(p);//打印棋盘
62     
63     return 0;
64 }

 

以上是关于天生棋局(堆上申请二维空间的应用)的主要内容,如果未能解决你的问题,请参考以下文章

C++二维数组离散动态和连续动态空间申请

c++中的new()申请二维数组

简单实现定长内存池

第84题二维数组的动态内存申请 | malloc 的应用

稀疏数组

单例设计模式(懒汉模式饿汉模式)