var
map:array[0..30,0..30]of int64;
x,y,k,l:int64;
m,n:int64;
i,j:longint;
ans:longint;
function tong(a,b:longint):boolean;
begin
if(a=x)and(b=y)then exit(false);
if((a-x)*(a-x)+(b-y)*(b-y)=5)then exit(false)
else exit(true);
end;
begin
fillchar(map,sizeof(map),0);
read(m,n,x,y);
for i:=1 to m do if tong(0,i)then map[0,i]:=1
else break;
for i:=1 to n do if tong(i,0)then map[i,0]:=1
else break;
// writeln(tong(2,0));
for i:=1 to n do
for j:=1 to m do
if tong(i,j)then map[i,j]:=map[i-1,j]+map[i,j-1];
for i:=1 to n do
for j:=1 to m do
if tong(i,j)then map[i,j]:=map[i-1,j]+map[i,j-1];
// print;
write(map[m,n]);
end.题目:过河卒
状态: Unaccepted
测评机: Xeost[5]
得分: 60分
提交日期: 2012-3-3 9:39:00
有效耗时: 969毫秒
测试结果1: 输出过少|用户输出数据少于标准输出的50%[标准输出4位|选手输出1位]
测试结果2: 通过本测试点|有效耗时187ms
测试结果3: 通过本测试点|有效耗时156ms
测试结果4: 通过本测试点|有效耗时157ms
测试结果5: 输出过少|用户输出数据少于标准输出的50%[标准输出8位|选手输出1位]
测试结果6: 输出过少|用户输出数据少于标准输出的50%[标准输出4位|选手输出1位]
测试结果7: 通过本测试点|有效耗时156ms
测试结果8: 通过本测试点|有效耗时156ms
测试结果9: 通过本测试点|有效耗时157ms
测试结果10: 输出过少|用户输出数据少于标准输出的50%[标准输出8位|选手输出1位]
你赋初始值和处理过程都好像有点问题,我发我的程序,你研究研究吧
const
c:array[1..8]of integer=(1,1,-1,-1,2,2,-2,-2);
d:array[1..8]of integer=(-2,2,-2,2,1,-1,-1,1);
var
i,j,n,m,x,y:integer;
p:array[-2..21,-2..21] of boolean;
a:array[0..21,0..21] of int64;
begin
readln(n,m,x,y);
fillchar(p,sizeof(p),true);
fillchar(a,sizeof(a),0);
p[x,y]:=false;
a[0,0]:=1;
for i:=1 to 8 do
p[x+c[i],y+d[i]]:=false;
for i:=1 to m do
if not p[0,i] then break
else a[0,i]:=a[0,i-1];
for i:=1 to n do
if not p[i,0] then break
else a[i,0]:=a[i-1,0];
for i:=1 to n do
for j:=1 to m do
if p[i,j] then a[i,j]:=a[i-1,j]+a[i,j-1];
writeln(a[n,m]);
end.