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);