我的算法代码有什么问题?

麦克斯蒙格

我要解决的问题是这样的:

您会得到一个矩形蛋糕,以r×c网格表示。每个单元格都有一个邪恶的草莓,或者是空的。例如,一个3×4的蛋糕可能如下所示:

终结者要吃蛋糕了!每次进餐时,他选择不包含任何有害草莓并且至少包含一个以前从未食用过的蛋糕单元的行或列,并在那里吃所有的蛋糕单元。他可以决定吃很多次。

请输出结块机可以吃的最大结块单元数。

输入的第一行包含两个整数r和c(2≤r,c≤10),表示蛋糕的行数和列数。接下来的r行每行包含c个字符-第i行的第j个字符表示第i行和第j列的单元格的内容,并且是以下任意一个:

'。' 字符表示没有邪恶草莓的蛋糕单元;

“ S”字符表示带有邪恶草莓的蛋糕格。

输出结块机可以吃的最大结块单元数。

这是应该产生的示例输入8

3 4
S...
....
..S.

我的代码给出12

#include <stdio.h>
int main(void) {
    int r, c;
    scanf("%d %d", &r, &c);
    int cake[r][c];
    int i, j, cnt=0, cou=0, a=0, b=0, cell=0;
    getchar();    //reject "\n" 
    for(i=0;i<r;i++) {
        for(j=0;j<c;j++) {
            scanf("%c", &cake[i][j]);
        }
        getchar();
    }
    // debug
    //    printf("%c\n", cake[0][0]);
    //        printf("%c\n", cake[0][1]);
    //            printf("%c\n", cake[0][2]);
    //                printf("%c\n", cake[0][3]);
    //                    printf("%c\n", cake[2][2]);
    for(i=0;i<r; i++) {
        for(j=0;j<c;j++) {
            cnt++;
            if(cake[i][j]=='S') {
                cnt=0;
                break;
            }
        }
        if(cnt>0) {
            a++;
        }
    }
    for(j=0;j<c;j++) {
        for(i=0;i<r;i++) {
            cou++;
            if(cake[i][j]=='S') {
                cou=0;
                break;
            }
        }
        if(cou>0) {
            b++;
        }
    }
    cell=cnt + cou - a*b;
    printf("%d", cell);
    return 0;
}

通过调试,我发现这if(cake[i][j] == 'S')是错误的,但我不知道原因。

J

更正的代码,通过“ <--- change”通知更改

http://ideone.com/ymLgnk

#include <stdio.h>
int main(void) {
    int r, c;
    scanf("%d %d", &r, &c);
    char cake[r][c]; <--- Change
    int i, j, cnt=0, cou=0, a=0, b=0, cell=0;
    //reject "\n" <--- Change
    for(i=0;i<r;i++) {
        for(j=0;j<c;j++) {
            scanf("%c", &cake[i][j]);
        }
        <--- Change
    }
    for(i=0;i<r;i++) {
        for(j=0;j<c;j++) {
            cnt++;
            if(cake[i][j]=='S') {
                cnt=0;
                break;
            }
        }
        if(cnt>0) {
            a++;
        }
    }
    for(j=0;j<c;j++) {
        for(i=0;i<r;i++) {
            cou++;
            if(cake[i][j]=='S') {
                cou=0;
                break;
            }
        }
        if(cou>0) {
            b++;
        }
    }
    cell=cnt + cou - a*b;
    printf("%d", cell);
    return 0;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

我的算法/代码有什么问题?

来自分类Dev

我的算法/代码有什么问题?

来自分类Dev

我的Simpson算法有什么问题?

来自分类Dev

带有 std::vector 和 std::queue 的 Prim 算法,我的代码有什么问题?

来自分类Dev

Scheme:我的代码有什么问题?

来自分类Dev

我的SQL代码有什么问题?

来自分类Dev

我的代码有什么问题?

来自分类Dev

我的车辆代码有什么问题?

来自分类Dev

我的Listview代码有什么问题?

来自分类Dev

我的C代码有什么问题

来自分类Dev

我的js代码有什么问题?

来自分类Dev

我的代码有什么问题?

来自分类Dev

我的C代码有什么问题?

来自分类Dev

我的代码有什么问题?

来自分类Dev

我的代码具体有什么问题?

来自分类Dev

我的Haskell代码有什么问题?

来自分类Dev

我的Angular代码有什么问题?

来自分类Dev

我的svg代码有什么问题?

来自分类Dev

我的 sql 代码有什么问题

来自分类Dev

我的汇编代码有什么问题

来自分类Dev

我的 LRUCache 代码有什么问题

来自分类Dev

我的 tensorflow 代码有什么问题

来自分类Dev

我的查询代码有什么问题?

来自分类Dev

(用于 Nim 游戏的 Python NegaMax 算法)我的代码有什么问题?

来自分类Dev

我创建的这种冒泡排序算法有什么问题?

来自分类Dev

我的OSDB哈希算法有什么问题?

来自分类Dev

我的反演计数算法有什么问题?

来自分类Dev

我创建的这种冒泡排序算法有什么问题?

来自分类Dev

我的 Leetcode 问题的 Python 代码有什么问题#315