水题

NOIP2017 金秋杯系列模拟赛
noip 提高组模拟赛 day1


1.回形遍历
(calc.cpp/c/pas)
时间限制:1s
内存限制:256MB
【问题描述】
给出一个 n*m 的棋盘,按如下方式遍历,请问(x,y)往后 z 步走到的是哪个格子。
【输入】
输入文件名为 calc.in。
一行,包含五个整数:n,m,x,y,z
【输出】
输出文件名为 calc.out。
输出一行,包含两个整数,表示所在格子的横纵坐标
【输入输出样例】 
 TYVJ.CN
calc.in calc.out
4 5 3 0 5 2 4
【样例解释】


【数据说明】
对于 70%的数据,1<=n,m,z<=1000,0<=x<n,0<=y<m

对于 100%的数据,1<=n,m,z<=100000,0<=x<n,0<=y<m 

var
i,j,n,m,x,y,z,c,s:longint;
a:array[0..100000,0..100000]of boolean;






begin
fillchar (a,sizeof(a),false);
read(n,m,x,y,z);
for i:=0 to m-1 do
for j:=0 to n-1 do
a[x,y]:=true;




if z=0 then write(c,s)
else
for i:=0 to m-1 do
for j:=0 to n-1 do
begin
if (a[i,j]=false)and ((a[i,j-1]=true) or (a[i-1,j]=true))
then if (a[i-1,j]=true)and (a[i,j-1]=true) then a[i,j]:=false
else begin
a[i,j]:=true;
dec(z);
end;
c:=i;
s:=j;
end;








end.

这篇216代码很水

主要思路是

用布尔二维数组和深搜。true  表走过 false表没走过 通过剪枝让其走环路 false变为true z-1最后输出数组的横纵坐标

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值