TAT 去年NOIP第一题有两个点不过,求大牛解释~谢

我的程序:varm,n,i,j,s,top,x:integer;a:array[1..1000]ofinteger;flag:boolean;beginreadln(m,... 我的程序:
var m,n,i,j,s,top,x:integer;
a:array[1..1000] of integer;
flag:boolean;
begin
readln(m,n);
top:=1;
x:=0;
for i:=1 to 1000 do a[i]:=-1;
for i:=1 to n do begin
read(s);
flag:=false;
for j:=1 to m do if a[j]=s then begin
flag:=true;
break;
end;
if (top<m) and (not(flag)) then begin
x:=x+1;
top:=top+1;
a[top]:=s
end
else if not(flag) then
begin
x:=x+1;
for j:=1 to top-1 do
begin
a[j]:=a[j+1];
a[top]:=s
end
end;
end;
writeln(x);
end.
展开
 我来答
玧鍩怺恠
2011-06-10 · TA获得超过322个赞
知道小有建树答主
回答量:128
采纳率:0%
帮助的人:154万
展开全部
for j:=1 to top-1 do
begin
a[j]:=a[j+1];
a[top]:=s
end
这里错了吧 应该是
for j:=1 to top-1 do
a[j]:=a[j+1];

a[top]:=s;

如果不是这样 那你的a[top]每一次都会赋值 并且已经把你a[m]中的元素覆盖了
经测试 似乎对了

希望对你有帮助
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式