只要序列中不出现连续3个递增的数就是对的
var
xl:array[1..5000] of integer;
b:boolean;
n,i,j:integer;
begin
read(n);
for i:=1 to n do
read(xl[i]);
b:=true;
for i:=1 to n-2 do
if (xl[i]<xl[i+1])and(xl[i+1]<xl[i+2]) then
begin
b:=false;
break;
end;
if b=false then write(’Wrong’)
else write(’Right’);
end.
这个程序80分。。。其实这个想法是错的
第2个想法:
把出栈序列恢复为进栈序列
如果进栈序列为1,2,3....n 则序列正确
var
b:boolean;
n,i,j,t,k:integer;
xl:array[1..5000] of integer;
begin
readln(n);
b:=true;
for i:=1 to n do
read(xl[i]);
j:=1;
for i:=1 to n do
if xl[i]<xl[j] then
begin
k:=i;
while k>j do
begin
t:=xl[j];xl[j]:=xl[k];xl[k]:=t;
dec(k);
inc(j);
end;
j:=i+1;
end;
for i:=1 to n do
if xl[i]<>i then begin b:=false;break;end;
case b of
false:writeln(’Wrong’);
true:writeln(’Right’);
end;
end.
这个想法应该是对的~但是60分 = =|||| 无语。。
正确方法到底是什么?~