编程。。各位帮帮忙。要FREE PASCAL的

来源:百度知道 编辑:UC知道 时间:2024/06/05 12:04:34
1.倒水问题(water.pas/water.in/water.out)
有两个无刻度标志的水杯,分别可装x升和y升的水。设另一个水缸,可以用来向水杯灌水或从水杯向水缸里倒水,两个水杯之间也可以相互倒水。已知x升的水杯开始是盛满水的,y升的杯子是空的,问如何通过倒水和灌水操作,用最少的步数能在y升的杯子里量出z升水。
输入:
一行:x,y,z(<=100),整数。中间一个空格隔开。
输出:
第一行:最少步数s。
以下共s行,每行两个用空格隔开的整数,第一个表示操作一次后,x杯中的水的数量,第二个整数表示y杯中的水的数量。
样例:
输入:
20 15 10
输出:
5
step1:5 15
step2:0 15
step3:15 0
step4:15 15
step5:20 10
2.源程序名 EVAC.???(PAS,C,CPP)
可执行文件名 EVAC.EXE
输入文件名 EVAC.IN
输出文件名 EVAC.OUT

农夫john最近在研究如果发生重大事故,如何让农场里的奶牛逃离问题。他想要确信在紧急情况下,所有的奶牛都有一个安全逃离方案。因为在紧急情况下,奶牛们都会失去观察和判断能力,所以最近john一直在教奶牛们逃离的方法,他的方法很简单,就是任何时候都只向北方或东方逃离,北方是行坐标减1的方向,东方是列坐标加1的方向。奶牛们虽笨,不过这一点事关自己的生命,所以他们牢记在心,而且也一定会这么做。
当然也会出问题,奶牛们在逃离的方向上会横冲直撞,为了阻止奶牛之间互相冲撞造成伤害,john要求任何一个奶牛的逃离路线不能经过其它奶牛的初始位置。一个逃离方案是安全的如果它能够满足上面的要求,反之它就是不安全的。
奶牛们所在的土地(农场)被划分成了r行和c列的一个矩形地图。奶牛们都待在这个矩形中的某一个位置。
请帮助john确定给定的一个地图上是否存在一个安全的逃离方案。
比如,下面的两个图:
左边的例子表示了一个能够安全逃离的地

第一题用宽搜:(运用队列进行储存)
var
used:array[0..100,0..100]of boolean;
a:array[1..10000,1..3]of integer; //1为父节点,2为x杯,3为y杯
x,y,z,open,closed:integer;
procedure init;
begin
readln(x,y,z);
fillchar(used,sizeof(used),true);
used[x,0]:=false;
a[1,1]:=0;a[1,2]:=x;a[1,3]:=0;
end;
function min(a,b:integer):integer;
begin
if a<b then min:=a else min:=b;
end;
procedure print;
var i,j:integer;
d:array[1..10000]of integer;
begin
i:=closed;j:=0;
repeat
inc(j);
d[j]:=i;
i:=a[i,1];
until i=0;
for i:=j downto 1 do writeln('step',j-i,':',a[d[i],2]:5,a[d[i],3]:5);
readln;
halt;
end;
procedure eva(i,j:integer);
begin
used[i,j]:=false;inc(closed); //入队
a[closed,1]:=open;a[closed,2]:=i;a[closed,3]:=j;
if j=z then print;