为什么?
  • 板块灌水区
  • 楼主liuchijun
  • 当前回复1
  • 已保存回复1
  • 发布时间2024/11/30 08:56
  • 上次更新2024/11/30 12:38:04
查看原帖
为什么?
1094880
liuchijun楼主2024/11/30 08:56

在《深入浅出进阶编》第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记录
为什么会这样?求教!

2024/11/30 08:56
加载中...