Section 1.4 Mother's Milk
2010-08-23 12:30
351 查看
由于数据过小, 采取枚举所以的方案
我采用的是递归 用vip(x, y, z) 表示 a, b, c杯中水的情况
另外采用Orz 过程模拟倒水情况 只要想清楚了 我是1次AC的
{
ID: yaoyaun4
PROG: milk3
LANG: PASCAL
}
Program milk3;
const inf = 'milk3.in'; outf = 'milk3.out';
var
a, b, c : longint;
f : array[0..20, 0..20] of longint;
ans : string;
Procedure init;
begin
assign(input, inf); reset(input);
readln(a, b, c);
close(input);
fillchar(f, sizeof(f), 255);
end;
Procedure orz(var i, j : longint; aj : Longint);
var
t : longint;
begin
t := aj - j;
if i > t then
begin
dec(i, t);
inc(j, t);
end
else
begin
inc(j, i);
i := 0;
end;
end;
Procedure vip(x, y, z : longint);
var
i, j : longint;
begin
if f[x, y] >= 0 then exit;
f[x, y] := z;
i := x; j := y; orz(i, j, b); vip(i, j, z);
i := x; j := z; orz(i, j, c); vip(i, y, j);
i := y; j := x; orz(i, j, a); vip(j, i, z);
i := y; j := z; orz(i, j, c); vip(x, i, j);
i := z; j := x; orz(i, j, a); vip(j, y, i);
i := z; j := y; orz(i, j, b); vip(x, j, i);
end;
Procedure work;
var
i : longint;
ch : string;
begin
vip(0, 0, c);
for i := 20 downto 0 do
if f[0, i] >= 0 then
begin
str(f[0, i], ch);
ans := ans + ch + ' ';
end;
delete(ans, length(ans), 1);
end;
Procedure print;
begin
assign(output, outf); rewrite(output);
writeln(ans);
close(output);
end;
begin
init;
work;
print;
end.
我采用的是递归 用vip(x, y, z) 表示 a, b, c杯中水的情况
另外采用Orz 过程模拟倒水情况 只要想清楚了 我是1次AC的
{
ID: yaoyaun4
PROG: milk3
LANG: PASCAL
}
Program milk3;
const inf = 'milk3.in'; outf = 'milk3.out';
var
a, b, c : longint;
f : array[0..20, 0..20] of longint;
ans : string;
Procedure init;
begin
assign(input, inf); reset(input);
readln(a, b, c);
close(input);
fillchar(f, sizeof(f), 255);
end;
Procedure orz(var i, j : longint; aj : Longint);
var
t : longint;
begin
t := aj - j;
if i > t then
begin
dec(i, t);
inc(j, t);
end
else
begin
inc(j, i);
i := 0;
end;
end;
Procedure vip(x, y, z : longint);
var
i, j : longint;
begin
if f[x, y] >= 0 then exit;
f[x, y] := z;
i := x; j := y; orz(i, j, b); vip(i, j, z);
i := x; j := z; orz(i, j, c); vip(i, y, j);
i := y; j := x; orz(i, j, a); vip(j, i, z);
i := y; j := z; orz(i, j, c); vip(x, i, j);
i := z; j := x; orz(i, j, a); vip(j, y, i);
i := z; j := y; orz(i, j, b); vip(x, j, i);
end;
Procedure work;
var
i : longint;
ch : string;
begin
vip(0, 0, c);
for i := 20 downto 0 do
if f[0, i] >= 0 then
begin
str(f[0, i], ch);
ans := ans + ch + ' ';
end;
delete(ans, length(ans), 1);
end;
Procedure print;
begin
assign(output, outf); rewrite(output);
writeln(ans);
close(output);
end;
begin
init;
work;
print;
end.
相关文章推荐
- USACO-Section 1.4 Mother's Milk(BFS)
- USACO Section 1.4 Mother's Milk - 输出错了好几次..
- USACO Section 1.4 Mother's Milk
- USCAO section Mother's Milk(搜索)
- USACO 1.4 Mother's Milk 母亲的牛奶(经典的dfs倒水问题)
- 1.4Mother's Milk
- Mother's Milk
- USACO Section 1.4 Mother's Milk 搜索
- USACO Mother's Milk, Number Triangles
- 【USACO】Mother's Milk(搜索)
- USACO Mother's Milk
- Usaco 1.4.4 母亲的牛奶(Mother's Milk)
- USACO Mother's Milk
- USCAO-Section 1.4 Mother's Milk
- USACO 1.4.2 Mother's Milk
- USACO-Section1.4 Mother's Milk [搜索]
- USACO1.4.2 Mother's Milk (milk3)
- USACO:Mother's Milk
- USACO Section 1.4 - Mother's Milk(DFS + 记忆化)
- [USACO 1.4.4] Mother's Milk