农夫过河问题。 5
vara,b:array[0..1001]oflongint;c:array[0..1000,0..5]ofboolean;f:array[0..2000,1..2]of...
var
a,b:array[0..1001] of longint;
c:array[0..1000,0..5] of boolean;
f:array[0..2000,1..2] of longint;
n,i:longint;
procedure bfs;
var
q,p,k,x,y,z:longint;
begin
q:=1; p:=2;
f[1,1]:=0; f[1,2]:=0;
while q<p do begin
for k:=-5 to 5 do begin
x:=f[q,1]+k;
y:=f[q,2]+1;
if (x<0) or (x>n+1) then continue;
if x=n+1 then begin
writeln(f[q,1],' ',y);
halt;
end;
z:=(y-1) mod b[x]+1;
if z>a[x] then continue;
f[p,1]:=x;
f[p,2]:=y;
inc(p);
end;
inc(q);
end;
end;
begin
readln(n);
for i:=1 to n do begin
readln(a[i],b[i]);
b[i]:=a[i]+b[i];
end;
b[0]:=1; b[n+1]:=1;
bfs;
writeln('NO');
end.
里面应该有个判重的语句,怎么写。 展开
a,b:array[0..1001] of longint;
c:array[0..1000,0..5] of boolean;
f:array[0..2000,1..2] of longint;
n,i:longint;
procedure bfs;
var
q,p,k,x,y,z:longint;
begin
q:=1; p:=2;
f[1,1]:=0; f[1,2]:=0;
while q<p do begin
for k:=-5 to 5 do begin
x:=f[q,1]+k;
y:=f[q,2]+1;
if (x<0) or (x>n+1) then continue;
if x=n+1 then begin
writeln(f[q,1],' ',y);
halt;
end;
z:=(y-1) mod b[x]+1;
if z>a[x] then continue;
f[p,1]:=x;
f[p,2]:=y;
inc(p);
end;
inc(q);
end;
end;
begin
readln(n);
for i:=1 to n do begin
readln(a[i],b[i]);
b[i]:=a[i]+b[i];
end;
b[0]:=1; b[n+1]:=1;
bfs;
writeln('NO');
end.
里面应该有个判重的语句,怎么写。 展开
若以下回答无法解决问题,邀请你更新回答
2个回答
展开全部
这个问题我做过 (假设农夫现在的位置是A 对岸是B)
农夫 狼 羊 白菜的问题
首先农夫和羊先到B
接着农夫一人回到A(羊在B)
然后农夫和白菜到B(此时农夫和羊和白菜都在B)
之后农夫和羊到A(只有白菜在B)
然后农夫和狼到B(A有羊 B有白菜和狼)
之后农夫在去一趟A把羊带上 到B就可以了
简单的说
首先 A狼和白菜------------------------B农夫和羊
农夫回去 A农夫、狼和白菜----------------B羊
农夫载白菜过河 A狼---------------------------------B农夫、羊和白菜
农夫再和羊一起渡回去 A农夫、狼和羊-------------------B白菜
农夫带狼过河 A羊---------------------------------B农夫、狼和白菜
农夫再次肚子回去 A农夫和羊-------------------------B狼和白菜
农夫最后带羊过河 A(无)----------------------------B农夫、狼、羊和白菜
满意请采纳。
农夫 狼 羊 白菜的问题
首先农夫和羊先到B
接着农夫一人回到A(羊在B)
然后农夫和白菜到B(此时农夫和羊和白菜都在B)
之后农夫和羊到A(只有白菜在B)
然后农夫和狼到B(A有羊 B有白菜和狼)
之后农夫在去一趟A把羊带上 到B就可以了
简单的说
首先 A狼和白菜------------------------B农夫和羊
农夫回去 A农夫、狼和白菜----------------B羊
农夫载白菜过河 A狼---------------------------------B农夫、羊和白菜
农夫再和羊一起渡回去 A农夫、狼和羊-------------------B白菜
农夫带狼过河 A羊---------------------------------B农夫、狼和白菜
农夫再次肚子回去 A农夫和羊-------------------------B狼和白菜
农夫最后带羊过河 A(无)----------------------------B农夫、狼、羊和白菜
满意请采纳。
追问
不是这个农夫过河。是这个:
农夫每天去种地都要过一条河,这条河很宽,过河要走上面的木桩。木桩有N个,排成一排,从左岸延伸到左岸,编号从1到N。左岸在1号桩的左边,右岸在N号桩的右边。但这些木桩会定时升降,因此,每天他都花不少时间在过河上。所以他想找一种最快过河的方法。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
农夫先把羊运过河,第二次再把菜运过河,此时又把羊捎回,第三次放下羊,同时把豺狗
运过河,第四次把羊运过河
运过河,第四次把羊运过河
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询