z1337390372 2021-12-17 08:39 采纳率: 0%
浏览 112

问题 E: 蛇形走位,请各位帮帮我

问题遇到的现象和发生背景

小孙和小王在玩蛇形走位游戏:在一个n行m列的矩阵中,从左上角(0,0)开始,蛇形走位到右下角为(n-1,m-1)。
小孙问小王:如果我现在站在(x, y)位置上,你猜我一共走了多少步?
小王思考片刻便有了答案, 你是否已经也能迅速算出结果呢?
如下图所示,左图是3x4矩阵到每个点经过的步数,为了方便理解,(0,0)从1算起。右图是4x3矩阵的示例:

img

输入
输入包含多组数据,每组数据一行。
每一行输入四个整数n,m,x,y(n <= 2* 104, m <= 2*104, 0<= x < n, 0 <= y < m),分别代表矩阵的行数、矩阵的列数、询问点的行坐标、询问点的列坐标。

输出
每组数据输出一行,表示小孙经过了多少步到达了(x,y)这个位置。

样例输入 Copy
3 4 0 2
4 3 2 1
样例输出 Copy
6
8

今天做了道题目,感觉有点难,但是写了好久还是写了出来,测试了差不多能过了,在学校oj上交一下,好家伙,运行错误

问题相关代码,请勿粘贴截图

#include<stdio.h>
int a[21000][21000];
int main(void)
{
    while(1)
    {
        int m,n,x,y,t = 1,o = 0,p = 0;
        scanf("%d %d %d %d",&m,&n,&x,&y);
        //o , m表示行,p,n表示列
        a[o][p] = t;
        while(1)
        {
            if(n > p + 1) a[o][++p] = ++t;
            else
            {
                a[++o][p] = ++t;
            }
            if(o == m - 1 && p == n - 1)
                break;
            while(o < m - 1 && p > 0)
            {
                a[++o][--p] = ++t;

            }
            if(o == m - 1)
                a[o][++p] = ++t;
            else
                a[++o][p] = ++t;

            if(o == m - 1 && p == n - 1)
                break;

            while(o > 0 && p < n - 1)
                a[--o][++p] = ++t;


        }
        printf("%d",a[x][y]);
    }


    return 0;
}


运行结果及报错内容

img

我的解答思路和尝试过的方法

试了将数组开大一点 但没有用

我想要达到的结果
  • 写回答

2条回答 默认 最新

  • CSDN专家-link 2021-12-17 08:42
    关注
    评论

报告相同问题?

问题事件

  • 创建了问题 12月17日

悬赏问题

  • ¥15 is not in the mmseg::model registry。报错,模型注册表找不到自定义模块。
  • ¥15 安装quartus II18.1时弹出此error,怎么解决?
  • ¥15 keil官网下载psn序列号在哪
  • ¥15 想用adb命令做一个通话软件,播放录音
  • ¥30 Pytorch深度学习服务器跑不通问题解决?
  • ¥15 部分客户订单定位有误的问题
  • ¥15 如何在maya程序中利用python编写领子和褶裥的模型的方法
  • ¥15 Bug traq 数据包 大概什么价
  • ¥15 在anaconda上pytorch和paddle paddle下载报错
  • ¥25 自动填写QQ腾讯文档收集表