在《深入浅出进阶编》第5页中:
第二自然段倒二及最后一行:“如果原来的sum[a[r-1]]是0,说明这位玩家的画是在区间里第一次看见,那么num增加1”
附代码:\
#include<iostream>//1
using namespace std;//2
#define maxn 1000010//3
int n,m,l,r,sum[2005],a[maxn];//4
int ans,ansl,ansr,num;//5
int main()//6
{//7
cin>>n>>m;//8
for(int i=1;i<=n;i++){//9
cin>>a[i];//10
}//11
l=1;r=1;num=0;ans=maxn;//12
while(l<=r&&r<=n+1){//13
if(num<m){//14
r++;//15
sum[a[r-1]]++;//16
if(sum[a[r-1]]==0)num++;//17
}//18
else{//19
if(ans>r-l){//20
ans=r-l;//21
ansl=l;//22
ansr=r-1;//23
}//24
sum[a[l]]--;//25
if(sum[a[l]]==0)num--;//26
l++;//27
}//28
}//29
cout<<ansl<<" "<<ansr<<endl;//30
return 0;//31
}//32
仅在第17行中
if(sum[a[r-1]]==0)num++;//17
同时出现“sum[a[r-1]]”及“num”为什么判断条件是其值为1而非0?
我抱着好奇的心态讲1改为0,结果全WA
AC记录
WA记录
为什么会这样?求教!