首页 > 解决方案 > 二维矩形网格

问题描述

我尝试在https://nus.kattis.com/problems/apples解决以下问题,但我的代码没有通过测试用例。我是 C 的新手,我不确定我哪里出错了。我的代码如下:

#include <stdio.h>

int main(){

    int r,c;
    scanf("%d",&r);
    scanf("%d",&c);
    char arr[r][c];
    for (int i=0; i<r;i++){
        for(int j=0;j<c;j++){
            if(arr[i][j]=='a' && arr[i+1][j]=='.'){
                arr[i][j] = '.';
                arr[i+1][j] = 'a';
            }
        }
    }
    for(int i=0;i<r;i++){
        for(int j=0;j<c;j++){
            printf("%c",arr[i][j]);
        }
    }
}

如果我不得不猜测,我会检查 arr[i][j] 是否等于 'a',因为 arr[i][j] 处的 'a' 与通用 'a' 的地址不同'。

标签: carrayspointersmultidimensional-array

解决方案


您的代码未正确读取输入(网格的内容)。在检查条件和执行更多任务之前,您必须使用 scanf 或其他输入函数从标准输入中读取。

虽然,如果您声明r * cchar 数组的大小,将输入推送给它们并运行代码,它会部分检查r第 th 索引arr[i+1][j]=='.'。您应该通过声明数组稍大或修改逻辑来避免这种情况。


推荐阅读