回 帖 发 新 帖 刷新版面

主题:做一道难题吧



输入N个数 
输出数列
要求1:数列的数从大到小排
高的数在前;低的数在后
并且前后顺序不能换
输出数列最长为几个数
输入
12
68 69 54 64 68 64 70 67 78 62 98 87
输出 4

回复列表 (共7个回复)

沙发

回朔的方法。

板凳

经典的最长不上升子序列问题,去google搜索一下吧。

3 楼


应该不会很难吧.待我回去研究一下子哈....

4 楼

冒泡排序法吧!

5 楼

若是冒泡排序就错的一塌糊涂..............(连样例都过不了)

6 楼

var n,i,j,z,w,b,max,o:integer;a:array[1..20] of integer;
begin
readln(n);
for i:=1 to n do readln(a[i]);
for i:=1 to n-1 do
for j:=i+1 to n do
if a[i]<a[j] then begin z:=a[i];a[i]:=a[j];a[j]:=z;end;
for i:=1 to n do write(a[i],' ');writeln;
w:=1;b:=a[1];o:=1;
repeat
w:=w+1;b:=b-1;
if b=a[w] then
o:=o+1
else
if b+1<>a[w] then
begin
if o>max then max:=o;
b:=a[w];o:=1;
end
else b:=b+1;
until w>=n;
if o>max then max:=o;
writeln(max);
end.

7 楼

这个是最长不上升子序列用动态规划外理,这是一类经典问题

我来回复

您尚未登录,请登录后再回复。点此登录或注册