主题:做一道难题吧
开xindd
[专家分:0] 发布于 2007-09-02 20:18:00
输入N个数
输出数列
要求1:数列的数从大到小排
高的数在前;低的数在后
并且前后顺序不能换
输出数列最长为几个数
输入
12
68 69 54 64 68 64 70 67 78 62 98 87
输出 4
回复列表 (共7个回复)
沙发
Matodied [专家分:7560] 发布于 2007-09-03 22:11:00
回朔的方法。
板凳
maxumi [专家分:2200] 发布于 2007-09-04 04:50:00
经典的最长不上升子序列问题,去google搜索一下吧。
3 楼
wtlrock [专家分:20] 发布于 2007-09-13 20:08:00
应该不会很难吧.待我回去研究一下子哈....
4 楼
万里长城 [专家分:340] 发布于 2007-09-15 18:16:00
冒泡排序法吧!
5 楼
abcwuhang [专家分:1840] 发布于 2007-09-15 19:37:00
若是冒泡排序就错的一塌糊涂..............(连样例都过不了)
6 楼
007bond [专家分:540] 发布于 2007-09-19 18:15:00
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 楼
firebaboon [专家分:0] 发布于 2007-09-20 19:58:00
这个是最长不上升子序列用动态规划外理,这是一类经典问题
我来回复