练习:天生棋局

有两个函数原型的题目可任意实现一个
1.传入一个 n 在堆空间中产生 n*n 方格的棋盘
int ** createBoard(int n);
int createBoard1(int ***p,int n);
2.N 颗棋子随机落在棋盘上<需要防止落在同一位置>
int initBoard(int **p,int n);
3.打印棋盘
int printBoard(int **p,int n);
如果有两颗棋子落同一行或者同一列 输出好棋,否则 输出 不是好棋。
将棋局中的棋子打印出来 空位用 O 有旗子的用 X 表示
4.销毁棋盘
int destroyBoard(int **p,int n);
int destroyBoard1(int ***p,int n);

  1 #include <stdio.h>
  2 #include <stdlib.h>
  3 #include <time.h>
  4 int **createBoard(int n);//生成棋盘
  5 void printBoard(int **board, int n);//打印棋盘
  6 int initBoard(int **board, int n);//落子
  7 int isGood(int **board, int n);//判断是否好棋
  8 int destroyBoard(int **board, int n);//销毁棋盘
  9 int main(void)
 10 {
 11     int **board=0;
 12     int n=6;
 13     board=createBoard(n);
 14     printBoard(board, n);
 15     printf("--------------------\n");
 16     initBoard(board, n);
 17     printBoard(board, n);
 18
 19     if(isGood(board, n))
 20         printf("very good\n");
 21     else
 22         printf("so low\n");
 23     printf("--------------------\n");
 24     destroyBoard(board, n);
 25     printf("the board was destroyed\n");
 26     return 0;
 27 }
 28 //创建棋盘
 29 int **createBoard(int n)
 30 {
 31     int **board=(int **)malloc(sizeof(int *)*n);
 32     int i=0,j=0;
 33     for(i=0;i<n;i++)
 34         board[i]=(int *)malloc(sizeof(int)*n);
 35     for(i=0;i<n;i++)
 36         for(j=0;j<n;j++)
 37             board[i][j]=0;
 38     return board;
 39 }
 40 //打印棋盘
 41 void printBoard(int **board, int n)
 42 {
 43     int i=0,j=0;
 44     for(i=0;i<n;i++)
 45     {
 46         for(j=0;j<n;j++)
 47             printf("%4d",board[i][j]);
 48         printf("\n");
 49     }
 50 }
 51 //随机落子
 52 int initBoard(int **board, int n)
 53 {
 54     int row=0,line=0;
 55     srand(time(NULL));
 56
 57     int i=0;
 58     while(i<n)
 59     {
 60         row=rand()%n;
 61         line=rand()%n;
 62
 63         if(board[row][line]==0)//若此处无子,则在此处落子
 64         {
 65             board[row][line]=1;
 66             i++;
 67         }
 68     }
 69     return i;
 70 }
 71 //判断是否有棋子在同行或者同列
 72 int isGood(int **board, int n)
 73 {
 74     /*
 75         将有子的坐标的横坐标还有纵坐标分别存入两个数组,最后再判断两个数组中有相同元素则是好棋
 76     */
 77     int *row=(int *)calloc(n,sizeof(int));
 78     int *line=(int *)calloc(n,sizeof(int));
 79     int i=0,j=0;
 80     int k=0;
 81     for(i=0;i<n;i++)
 82         for(j=0;j<n;j++)
 83         {
 84             if(board[i][j]==1){
 85                 row[k]=i;
 86                 line[k]=j;
 87                 k++;
 88             }
 89         }
 90     int flag=0;
 91     for(i=0;i<k-1;i++)
 92         for(j=i+1;j<k;j++)
 93         {
 94             if(row[i]==row[j]||line[i]==line[j]){
 95                 flag=1;
 96                 return flag;
 97             }
 98         }
 99     return flag;
100 }
101 //销毁棋盘
102 int destroyBoard(int **board, int n)
103 {
104     int i=0;
105     for(i=0;i<n;i++)
106     {
107         free(board[i]);
108     }
109     free(board);
110     return 0;
111 }
时间: 2024-08-07 17:02:20

练习:天生棋局的相关文章

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

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 *)

程序猿天生就是查理&amp;#183;芒格

首先简单的介绍一下查理·芒格.就是巴菲特的合伙人,当然,这个介绍就足够了.原因,你懂的.好了.開始正文: 写这个并非为了自夸,也不是为了讨好这些自诩为码农的怪人.以下的理由应该是站得住脚的: 1)先解决哪些具有显而易见的答案的问题 这就是我们做事的风格,不管学会了多少门语言,我们新学一门语言的时候都是从Hello World開始.2)有扎实的数学思维(运用数学思维)      一般程序猿都是计算机科班出身.计算机专业一般数学都要求非常高(高等数学,排列组合.数字逻辑,离散数学,统计概念等):3)

共享经济下的联合办公棋局:资本助燃跑马圈地竞争5大关键词_转

转自:http://www.iheima.com/zixun/2017/0206/161059.shtml 在共享办公领域竞争,最重要的一个关键词是什么?氪空间CSO田智勇.Funwork北京区域总经理王彧.纳什空间李鹏.梦想加创始人王晓鲁.方糖小镇北京区域总经理周宾分别给出的答案是服务.地段.需求.产品.空间问题. 城市里有了这样一片空间.它置身于繁华闹市,时髦装修.便捷办公,甚至可能与生活环境连通.在这个被隔离成若干隔间的空间里,不只有你的同事,还有一群其他公司的家伙们."联合办公"

天生作家

没有你的地方都是他乡 没有你的旅行都是流浪 ----王菲<我在终点等你> 我想很多人不会理解,<从你的全世界路过>,其看似浮夸的爱.可能很多人不理解,幺鸡为什么要离开,猪头为什么追着车喊着“燕子,没有你我怎么活,你带我走吧”,可能你也不能理解,陈末为什么会为了一个跟自己不在一个世界的人变得颓废,自甘堕落.那么,我想你可能永远都不会懂,编剧的那一颗痴心.最终<我从你的全世界路过>,不管值不值得,我都义无反顾,也许我的人生就这样浪费,挥霍,萎靡.也都比,让自己放弃,来的容易

《天生全球企业》:美国医疗改革的一个方向:打包支付。4星

老牌高水平管理杂志.本期大部分文章水平都在4星甚者更高.总体评价4星. 个人感觉水平最高的是迈克尔·波特和罗伯特·卡普兰的那篇<如何为医疗服务付费>水平最高,我给5星.他们的观点是:打包支付(书中译作捆绑支付)更适合美国国情.后面紧接一篇他人的文章认为应该实行按人头付费,正好可以把两种对立的观点放在一起做对比. <信息视觉化的科学与艺术>.<玩不转办公室政治就别指望升职了>这两篇也不错. 以下是书中一些内容的摘抄: 1:有确凿证据表明,我们的工作评审.奖金以及升迁和实际

程序员天生就是查理&#183;芒格

首先简单的介绍一下查理·芒格,就是巴菲特的合伙人,当然,你懂的.好了,开始正文: 写这个并不是为了自夸,也不是为了讨好这些自诩为码农的怪人,下面的理由应该是站得住脚的: 1)先解决哪些具有显而易见的答案的问题 这就是我们做事的风格,无论学会了多少门语言,我们新学一门语言的时候都是从Hello World开始.2)有扎实的数学思维(运用数学思维)      一般程序员都是计算机科班出身,计算机专业一般数学都要求很高(高等数学,排列组合,数字逻辑,离散数学,统计概念等):3)天生的抽象思维能力(运用

[转载] 中国象棋软件-引擎实现(二)棋局表示

对于棋盘的表示当前比较先进的思想是“位棋盘”.“位棋盘”用于国际象棋非常便捷,因为国际象棋的棋盘正好有64个格子,可以将一个棋盘的信息用一个64位的变量来表示.其基本思想就是用位上的值是1或0来表示棋子在棋盘相应位置上的存在与否,这样做的好处是可以通过位操作运算来加快局面评估和着法生成的速度.当用于中国象棋时需要进行拼凑以表示中国象棋棋盘的90个格子…… 由于考虑到本人目前水平精力均着实有限.当前应以实现本程序为首要目标,而不是致力于高质量算法研究,所以就偷懒采用了传统的较为简单的“棋盘数组”—

2014年5月31日 《失控 第一章 人造与天生》读后感

从今天开始,每读完<失控>的一章,我都要写下我的读后感,可能是摘要,也获许是我自己的看法和感悟.坚持下去! 接下来是第一章   人造与天生. 人造与天生的联姻是本书的主题. 在我看来,如果世界被分成两部分,那么一部分就是自然世界,另一部分就是人造世界.它们并不是相对的,而是共存的,相互依赖,相互成长的(但是我认为人造世界更加依赖自然世界,因为人造世界就是在自然世界的基础上构建的).自然世界,赠与了人们一切最基础的生存来源,是一个强大的生物基因库,如果你认为它只是给人们提供了这些,那就错了,更重

旅行穿搭要美翻天 崔始源天生高富帅

旅行穿搭要美翻天 崔始源天生高富帅 http://baozoumanhua.com/users/13743722/articleshttp://baozoumanhua.com/users/13743720/articleshttp://baozoumanhua.com/users/13743730/articleshttp://baozoumanhua.com/users/13743731/articleshttp://baozoumanhua.com/users/13743739/artic