257 条题解
-
0sza603 LV 6 @ 2009-02-25 21:56:01
#include
int main(void) {
char words[2000][76];
int max[2000],n,i,j,k,maxv=0;
scanf("%d",&n);
for(i=0;i=max[i]-1;j--) if(max[j]>=max[i]) {
for(k=0;words[j][k];k++) if(words[j][k]!=words[i][k]) break;
if(!words[j][k]) max[i]=max[j]+1;
}
if(maxv -
02009-02-21 20:38:26@
祝贺第2100个AC!
-
02009-02-15 08:04:59@
注意啊 判断后一个是否包含前一个时要用
pos(a[i],a[j])=1
而不要用
pos(a[i],a[j])0
改前50 改后ac -
02009-02-04 21:48:31@
我导弹写太多了,五分钟搞定这题
-
02009-01-30 20:13:11@
没做时感觉不容易,做了之后才发现它很水……
program tt;
var i,j,n,m,k,sf:integer;
a:array[1..2000]of string;
b:array[1..2000]of integer;
begin
readln(n);
for i:=1 to n do begin
b[i]:=1;
readln(a[i]);
end;
for i:=2 to n do
for j:=1 to i-1 do
if length(a[j])b[i] then
b[i]:=b[j]+1;
end;
m:=0;
for i:=1 to n do
if b[i]>m then m:=b[i];
writeln(m);
readln;
end.编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms -
02009-01-21 08:55:40@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms
var
a:array[1..2000]of string;
b:array[1..2000]of longint;
n,i,j:longint;
begin
readln(n);
for i:=1 to n do
readln(a[i]);
for i:=1 to n do
b[i]:=1;
for i:=2 to n do
for j:=1 to i-1 do
if (pos(a[j],a[i])=1)and(b[j]+1>b[i])
then b[i]:=b[j]+1;
j:=1;
for i:=1 to n do
if b[i]>j
then j:=b[i];
write(j);
end.数据太弱了。动规也可以过。
-
02008-12-20 10:55:34@
不用太麻烦直接做都能秒
-
02008-12-18 09:54:15@
O(n)用栈搞定
-
02008-12-12 17:15:05@
这个题还是用一维的动态规划比较好。
-
02008-12-06 15:30:36@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms -
02008-12-01 19:17:51@
挺简单的啊,AC~~
-
02008-11-27 19:53:42@
你可以在这里写上你的解题思路或者解题方法等但规定要求不能贴出任何有关于此题的程序代码
var s:array[1..2000] of string; st:string; n,i,j,tot:longint;procedure search(a,b:longint);var i:integer;begin if b>tot then tot:=b; for i:=a+1 to n do if pos(s[a],s[i])=1 then search(i,b+1);end;begin readln(n); tot:=1; for i:=1 to n do readln(s[i]); for i:=1 to n-1 do for j:=i+1 to n do if length(s[i])>length(s[j]) then begin st:=s[i]; s[i]:=s[j]; s[j]:=st; end; for j:=1 to n do search(j,1) ;{DP100分} writeln(tot);end.
var s:array[1..2000] of string; st:string; n,i,j,tot:longint; f:array[1..2000] of longint;begin readln(n); for i:=1 to n do readln(s[i]); for i:=1 to n do f[i]:=1; for i:=2 to n do for j:=1 to i-1 do begin if (pos(s[j],s[i])=1) and (f[i]tot then tot:=f[i]; writeln(tot);{搜索90分}end. -
02008-11-13 21:15:57@
最后一个点怎么回事啊
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:运行时错误...|错误号: -1073741571
---|---|---|---|---|---|---|---|-
Unaccepted 有效得分:90 有效耗时:0ms
program code;
var
i,j,k,l,n,r,max:integer;
s:char;
st:string;
a:array[0..1001]of string;
f:array[0..1001]of integer;
procedure init;
begin
readln(n);
for i:=1 to n do
begin
readln(a[i]);
end;
end;
function judge(a,b:string):boolean;
begin
if pos(b,a)=1 then exit(true) else
exit(false);
end;
procedure main;
var s1,s2:string;
begin
for i:=1 to n do
f[i]:=1;
max:=0;
for i:=1 to n do
for j:=1 to i-1 do
if (f[i]max then max:=f[i];
end;
end;
begin
init;
main;
writeln(max);
end. -
02008-11-13 09:13:26@
非常容易理解的题解 很讨厌有人写难以理解的题解
procedure init;
var i:longint;
begin
assign(input,'mojiao.in');
reset(input);
readln(n);
for i:=1 to n do
readln(a[i]);
close(input);
end;
procedure done;
var i,j,max,t:longint;
begin
max:=0;
t:=1;
for i:=1 to n do f[i]:=1;
for i:=1 to n do
begin
for j:=1 to n do
if ij then
if pos(a[j],a[i])=1 then inc(t);
if t>max then max:=t;
t:=1;
end;
write(max);
end; -
02008-11-11 15:29:00@
大家可以写个二十六叉树试试..
高效..搞笑..!! -
02008-11-11 13:29:05@
program code;
var str:array[1..2000] of string;
n,i,j,k:longint;
a:array[1..2000] of longint;begin
readln(n);
for i:=1 to n do
readln(str[i]);
for i:=1 to n do
a[i]:=1;
for i:=2 to n do
for j:=1 to i-1 do
if (pos(str[j],str[i])=1) and (a[i]a[1] then
a[1]:=a[i];
writeln(a[1]);
end. -
02008-11-11 10:16:45@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 25ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:25mswater problem!~~ 经典的最长子序列
-
02008-11-09 17:06:40@
就是一最长上升子序列。。。把判断语句稍微改那么一点点。。。水题啊
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms -
02008-11-09 11:22:31@
program Ltr;
var i,j,m,n,tmp,max:longint;
a:array[1..2000] of string;
f:array[1..2000] of integer;
begin
readln(n);
for i:=1 to n do readln(a[i]);
for i:=1 to n do begin
max:=0;
for j:=1 to i-1 do begin
tmp:=pos(a[j],a[i]);
if tmp=1 then
if f[j]>max then max:=f[j];
end;
f[i]:=max+1;
end;
max:=0;
for i:=1 to n do if f[i]>max then max:=f[i];
writeln(max);
end. -
02008-11-08 15:24:51@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms还是用动态规划作比较好
转移方程:f[i]:=max(f[j])+1 (i>j>0)