用c语言动态二维数组组动态输入围棋盘java

韩静静 的BLOG
用户名:韩静静
文章数:157
评论数:33
访问量:8280
注册日期:
阅读量:5863
阅读量:12276
阅读量:371954
阅读量:1065930
51CTO推荐博文
&&&&编写了五个函数,再用主函数调用:#include&stdio.h&
#include&stdlib.h&
char&arr[3][3];
void&print()
&&&&int&i&=&0;
&&&&for&(i&=&0;&i&3;&i++)
&&&&&&&&printf("%c|%c|%c|\n",&arr[i][0],&arr[i][1],&arr[i][2]);
&&&&&&&&printf("_|_|_|\n");
void&init_arr()
&&&&int&i&=&0;
&&&&int&j&=&0;
&&&&for&(i&=&0;&i&3;&i++)
&&&&&&&&for&(j&=&0;&j&3;&j++)
&&&&&&&&&&&&arr[i][j]&=&'&';
void&player()
&&&&int&i&=&0;
&&&&int&j&=&0;
&&&&printf("输入i,j:\n");
&&&&scanf("%d&%d",&&i,&&j);
&&&&if&(arr[i][j]&!=&'&')
&&&&&&&&printf("此格已输入,请重新输入i,j:\n");
&&&&&&&&player();
&&&&&&&&arr[i][j]&=&'X';
void&computer_move()
&&&&int&i&=&0;
&&&&int&j&=&0;
&&&&for&(i&=&0;&i&3;&i++)
&&&&&&&&for&(j&=&0;&j&3;&j++)
&&&&&&&&&&&&if&(arr[i][j]&==&'&')
&&&&&&&&&&&&{
&&&&&&&&&&&&&&&&arr[i][j]&=&'0';
&&&&&&&&&&&&&&&&
&&&&&&&&&&&&}
char&win()
&&&&int&i&=&0;
&&&&for&(i&=&0;&i&3;&i++)
&&&&&&&&if&((arr[i][0]&==&arr[i][1])&&&
&&&&&&&&&&&&(arr[i][1]&==&arr[i][2]))
&&&&&&&&&&&&return&arr[i][0];
&&&&for&(i&=&0;&i&3;&i++)
&&&&&&&&if&((arr[0][i]&==&arr[1][i])&&&
&&&&&&&&&&&&(arr[1][i]&==&arr[2][i]))
&&&&&&&&&&&&return&arr[0][i];
int&main()
&&&&int&i&=&0;
&&&&int&j&=&0;
&&&&char&done&=&'&';
&&&&init_arr();
&&&&printf("棋盘游戏:\n");
&&&&&&&&print();
&&&&&&&&player();
&&&&&&&&done&=&win();
&&&&&&&&if&(done&!=&'&')
&&&&&&&&&&&&
&&&&&&&&computer_move();
&&&&&&&&done&=&win();
&&&&}&while&(done&==&'&');
&&&&if&(done&==&'0')
&&&&&&&&printf("电脑赢\n");
&&&&&&&&printf("玩家赢\n");
&&&&print();
&&&&system("pause");
&&&&return&0;
了这篇文章
类别:┆阅读(0)┆评论(0)数学计算(规律)(30)
小兔的棋盘
Time Limit:
MS (Java/Others)&&&&Memory Limit:
K (Java/Others)
Total Submission(s): 6317&&&&Accepted Submission(s): 3430
Problem Description
小兔的叔叔从外面旅游回来给她带来了一个礼物,小兔高兴地跑回自己的房间,拆开一看是一个棋盘,小兔有所失望。不过没过几天发现了棋盘的好玩之处。从起点(0,0)走到终点(n,n)的最短路径数是C(2n,n),现在小兔又想如果不穿越对角线(但可接触对角线上的格点),这样的路径数有多少?小兔想了很长时间都没想出来,现在想请你帮助小兔解决这个问题,对于你来说应该不难吧!
每次输入一个数n(1&=n&=35),当n等于-1时结束输入。
对于每个输入数据输出路径数,具体格式看Sample。
Sample Input
Sample Output
3 12 416024
lcy&&&|&&&We have carefully selected several similar problems for you:&&&&&&&
#include&stdio.h&
#include&string.h&
int main()
int n,i,t,j;
__int64 a[40][40];
memset(a,0,sizeof(a));
a[1][1]=1;
for(i=2;i&=36;i++)
for(j=1;j&=i;j++)
a[i][j]=a[i-1][j]+a[i][j-1];
while(scanf(&%d&,&n)!=EOF&&(n!=-1))
printf(&%d %d %I64d\n&,++t,n,a[n+1][n+1]*2);
//限制条件是35还是36 有区别,有条件还是把限制条件开大点;
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:22328次
积分:1796
积分:1796
排名:第17625名
原创:165篇
(1)(1)(97)(67)1244人阅读
算法设计(2)
棋盘覆盖是在一个2^k*2^k的棋盘中存在一个特殊格子,现要求用L型覆盖整个棋盘(除特殊格子),如图1所示,问如何覆盖这个棋盘?&
& & & & & & & & 图 1
//****************************************************
//问题描述:在一个2k×2k 个方格组成的棋盘中,恰有一个方格
//与其它方格不同,称该方格为一特殊方格,且称该棋盘为一特殊
//棋盘。在棋盘覆盖问题中,要用4种不同形态的L型骨牌覆盖给定
//的特殊棋盘上除特殊方格以外的所有方格,且任何2个L型骨牌不
//得重叠覆盖。
//****************************************************
//****************************************************
/*算法思想:
用分治策略,可以设计出解棋盘覆盖问题的简洁算法。
(1)当k&0时,将2的k次幂乘以2的k次幂棋盘分割为4个2的k-1次幂乘以2的k-1次幂子棋盘。
(2)特殊方格必位于4个较小棋盘之一中,其余3个子棋盘中无特殊方格。
(3)为了将这3个无特殊方格的子棋盘转化为特殊棋盘,可以用一个L型骨牌覆盖这3个较小棋盘的会合处,这3个子棋盘上被L型骨牌覆盖的方格就成为该棋盘上的特殊方格,从而将原问题转化为4个较小规模的棋盘覆盖问题。递归地使用这种分割,直至棋盘简化为1*1棋盘。
#include &stdio.h&
row:棋盘左上角方格的行号
col:棋盘左上角方格的列号
i:特殊方格所在的行号
j:特殊方格所在的列号
n:方形棋盘的边长
void Tromino(int (*a)[8],int i,int j,int row,int col,int n)
if (i&=(row+n/2-1)&&j&=(col+n/2-1))
//特殊方格在左上部分
a[row+n/2-1][col+n/2]=t;
a[row+n/2][col+n/2]=t;
a[row+n/2][col+n/2-1]=t;
Tromino(a,i,j,row,col,n/2);
Tromino(a,row+n/2-1,col+n/2,row,col+n/2,n/2);
Tromino(a,row+n/2,col+n/2,row+n/2,col+n/2,n/2);
Tromino(a,row+n/2,col+n/2-1,row+n/2,col,n/2);
if (i&=(row+n/2-1)&&j&(col+n/2-1))
//特殊方格在右上部分
a[row+n/2-1][col+n/2-1]=t;
a[row+n/2][col+n/2-1]=t;
a[row+n/2][col+n/2]=t;
Tromino(a,i,j,row,col+n/2,n/2);
Tromino(a,row+n/2-1,col+n/2-1,row,col,n/2);
Tromino(a,row+n/2,col+n/2-1,row+n/2,col,n/2);
Tromino(a,row+n/2,col+n/2,row+n/2,col+n/2,n/2);
if (i&(row+n/2-1)&&j&=(col+n/2-1))
//特殊方格在左下部分
a[row+n/2-1][col+n/2-1]=t;
a[row+n/2-1][col+n/2]=t;
a[row+n/2][col+n/2]=t;
Tromino(a,i,j,row+n/2,col,n/2);
Tromino(a,row+n/2-1,col+n/2-1,row,col,n/2);
Tromino(a,row+n/2-1,col+n/2,row,col+n/2,n/2);
Tromino(a,row+n/2,col+n/2,row+n/2,col+n/2,n/2);
if (i&(row+n/2-1)&&j&(col+n/2-1))
//特殊方格在右下部分
a[row+n/2][col+n/2-1]=t;
a[row+n/2-1][col+n/2-1]=t;
a[row+n/2-1][col+n/2]=t;
Tromino(a,i,j,row+n/2,col+n/2,n/2);
Tromino(a,row+n/2,col+n/2-1,row+n/2,col,n/2);
Tromino(a,row+n/2-1,col+n/2-1,row,col,n/2);
Tromino(a,row+n/2-1,col+n/2,row,col+n/2,n/2);
int main()
int ChessBoard[8][8]={{0,0,1,0,0,0,0,0},{0},{0},{0},{0},{0},{0},{0}};
Tromino(ChessBoard,0,2,0,0,8);
for (int i=0;i&8;i++)
for(int j=0;j&8;j++)
printf(&%-4d&,T[i][j]);
printf(&\n&);
}运行结果显示:
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:68117次
排名:千里之外
原创:16篇
转载:14篇
(1)(1)(7)(21)}

我要回帖

更多关于 动态申请二维数组 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信