P2704本地运行和你谷运行输出不一样

P2704 [NOI2001] 炮兵阵地

BJ_zpy @ 2021-08-25 14:40:17

第一个点(样例)提交后WA了

对于这组数据:

5 4
PHPP
PPHH
PPPP
PHPP
PHHP

我的程序在本地输出为6,是正确的,在别的IDE上也是正确的,但在你谷的IDE上运行是5,交上去第一个点(样例)也是5,但看不出问题,烦请大佬们看看

Code:

#include<cstdio>
#include<iostream>
using namespace std;
int f[105][75][75];
int g[105],s[75],num[75];
int n,m,cnt;
int main()
{
    char C;
    scanf("%d%d",&n,&m);
    for(int i=1; i<=n; i++)
    {
        scanf("%c",&C);
        for(int j=0; j<m; j++)
        {
            scanf("%c",&C);
            if(C=='P')g[i]+=1<<(m-j-1);
        }
    }
    for(int i=0; i<(1<<m); i++)
        if(!(i&i>>1)&&!(i&i>>2)&&!(i&i<<1)&&!(i&i<<2))
        {
            s[cnt++]=i;
            for(int j=0; j<m; j++)
                num[i]+=((i>>j)&1);
        }
    for(int i=1; i<=n+2; i++)
        for(int a=0; a<cnt; a++)
            for(int b=0; b<cnt; b++)
                for(int c=0; c<cnt; c++)
                    if(!(s[a]&s[b])&&!(s[a]&s[c])&&!(s[b]&s[c])&&(g[i]&s[a])==s[a]&&(g[i-1]&s[b])==s[b])
                        f[i][a][b]=max(f[i][a][b],f[i-1][b][c]+num[s[a]]);
    printf("%d",f[n+2][0][0]);
    return 0;
}

by 紪絽 @ 2021-08-25 14:43:46

还会有人用洛谷IDE吗


by BJ_zpy @ 2021-08-25 14:50:30

已找到问题

第一个数据多了一个换行符

而我用的是scanf,多读了一个'\n'

14行换成cin就好

珍爱生命,远离scanf


by DesignDigits @ 2021-08-25 14:56:28

@BJ_zpy 如果想读入 char 但跳过空白符,推荐 scanf(" %c", &ch)


by BJ_zpy @ 2021-08-25 15:01:30

@Codezhu 啊?这是什么原理啊?


by BJ_zpy @ 2021-08-25 15:01:59

这样可以跳过换行符吗?


by DesignDigits @ 2021-08-25 15:21:40

还有加上这个头 cin 速度就起来了

ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);

|