gpt4 book ai didi

c - 在c中遍历P*Q网格中的一些单元格

转载 作者:行者123 更新时间:2023-11-30 17:09:41 25 4
gpt4 key购买 nike

假设我有一个 M*N 数组,我必须遍历它。有 M*N 个单元格(从 1 到 M*N)。将有一个输入 n,根据该输入,我将不得不移动到下一个可能的单元格。 第 n 格的人只能遍历其左侧、右侧或前面的格。我必须随机选择一个位置并显示它。

我的示例代码:

#include<stdio.h>
#include<math.h>

int main()
{
int row,col,n,p;
int array[3];
printf("\nEnter row and columns:");
scanf("%d""%d",&row,&col);
printf("\nEnter a position:");
scanf("%d",&n);
array[3]={n-1,n+1,n-row); //three possible movements(although I have used 1D array here,n determines the cell position(say: any value from 1 to 25), I have treated the array positions as 2D. For example: if n=7, then for a 5*5 array, possible movements are cells 6,8 and 2
p= array[ rand() % 3 ]+1; //choosing a next random position
printf("\nnext cell is %d",p);
}

但是有一个问题。让我们考虑一个 5*5 数组的场景:

from cell 1, I can only move to right.
from cell 2,3,4, I can move to both left and right cells.
from cell 5, I can only move left.
from cell 6,11,16,21, I can move only right and upwards.
from cell 25,20,15,10, I can move at only left and upwards

现在对于上面的单元格,上面的程序可能会生成错误的位置(垃圾值,如负数或大于 25)。这只是一般情况或 5*5 数组。但是我将如何处理任何 M*N 数组中的这种类型的条件。我可以在上述程序中应用任何规则以获得正确的输出吗?

最佳答案

我建议你用 m 来解决这个问题和n单独计算,而不是使用 m*n .
如果板子尺寸为 N*M (N 行,M 列):如果当前行是 n (0<=n<=N-1)当前列是 m (0<=m<=M-1) :

if n==0 you can only move right.
else if n==N-1 you can only move left.
else both.
if m==0 you can only move down.
else if m==M-1 you can only move up.
else both.

这样你就可以知道如何从 array[n][m] 移动;

关于c - 在c中遍历P*Q网格中的一些单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33190737/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com