C 遍历大小为[6][7]的数组对角线的方法
我正在用C语言构建一个名为“四人行”或“连接四人行”的游戏,您可以在这里看到该游戏的快速回顾: 因此,我有一个大小为[6][7]的二维数组,我想检查对角线中是否有4个“*”或“o”标记,它们被定义为一行中的字符。我试着写一个函数,在每次播放之后,它对所有可能的对角线求和,看看和是不是4,或者如果我们想成对检查,如果我们得到三个相似的对,那么一行中有4个相等的标记,所以在这种情况下,和是3,依此类推 据我所知,有12条不同的对角线(每6条在不同的方向上),你建议我如何在最有效的情况下编写这个函数?而且还包括所有可能的,少于16行的代码。 任何形式的帮助都将不胜感激 下面是我所做工作的一个例子:C 遍历大小为[6][7]的数组对角线的方法,c,arrays,C,Arrays,我正在用C语言构建一个名为“四人行”或“连接四人行”的游戏,您可以在这里看到该游戏的快速回顾: 因此,我有一个大小为[6][7]的二维数组,我想检查对角线中是否有4个“*”或“o”标记,它们被定义为一行中的字符。我试着写一个函数,在每次播放之后,它对所有可能的对角线求和,看看和是不是4,或者如果我们想成对检查,如果我们得到三个相似的对,那么一行中有4个相等的标记,所以在这种情况下,和是3,依此类推 据我所知,有12条不同的对角线(每6条在不同的方向上),你建议我如何在最有效的情况下编写这个函数
int CheckDiagonal_1(char matrix[Rows][Columns])
{
int s_count = 0;
int o_count = 0;
for(int i = 0; i < 4; i++)
{
for(int j = 5; j >= 3; j--)
{
for(int k = 0; k <= 3; k++)
{
if(matrix[j-k][i+k]== matrix[j-k-1][i+k+1]) count ++;
if(count==4) return count;
}
count = 0;
}
}
return 0;
}
int CheckDiagonal_1(字符矩阵[行][列])
{
int s_计数=0;
INTO_计数=0;
对于(int i=0;i<4;i++)
{
对于(int j=5;j>=3;j--)
{
对于(int k=0;k对角线是序列,其中
i==j+c
用于i from(0,高度)和c(-width,height)
- 或
i==-j+c
所以,如果我们的目标是编写适合少量行的代码,只需编写遍历i{0-6}的循环,并检查索引是否适合范围
for (int c= -7; c < 7; c++)
{
int starsOnDiag = 0;
for(int i = 0; i < 7; i++)
{
starsOnDiag += !indexesInRange(i, j) ? 0 :
cell[i, i+c] == '*' ? 1 : 0;
}
... // other diagonal and check for other symbol
}
for(int c=-7;c<7;c++)
{
int starsOnDiag=0;
对于(int i=0;i<7;i++)
{
starsOnDiag+=!索引范围(i,j)?0:
单元[i,i+c]='*'?1:0;
}
…//其他对角线并检查是否有其他符号
}
@Jongware我想是一个42
元素的数组…@Jongware我编辑过。它意味着6行7列。你自己尝试过解决这个问题吗?有代码要显示吗?是的,但我没有找到一个完整的解决方案,我会在几分钟内尝试放置一些东西。没有发布任何代码或试图通过o解决任何问题的家庭作业尝试内塞尔夫。