- 螺旋矩阵
- 2014-11-15 22:18:49 @
###Pascal Code
var
n,x,y,k,ans,m,i:longint;
function min(a,b,c,d:longint):longint;
begin
if a<b then min:=a
else min:=b;
if c<min then
min:=c;
if d<min then
min:=d;
end;
begin
readln(n,x,y);
if n=1 then
begin
writeln(1);
exit;
end;
k:=min(x,y,n-x+1,n-y+1);
ans:=0;
m:=n;
for i:=1 to k-1 do
begin
inc(ans,(m-1)*4);
dec(m,2);
end;
if k=x then inc(ans,y-k+1)
else if k=n-y+1 then inc(ans,m+x-k)
else if k=n-x+1 then inc(ans,(m-1)*2+n-y+2-k)
else if k=y then inc(ans,(m-1)*3+n-x+2-k);
writeln(ans);
end.
8 条评论
-
方晨羽 LV 9 @ 2016-08-18 16:08:01
提示:下次发到题解去 !!!
-
2015-10-05 11:30:53@
sd
-
2015-08-17 15:22:40@
楼下那家伙根本不会,别听他bb
-
2015-08-17 15:21:08@
恩,是的呢
-
2015-07-12 14:12:18@
orz
-
2014-11-28 19:34:54@
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
void sq();
void cl();
int x,y,m=0,n,n1,n2;
void sq()
{
if(x==n1||x==n2||y==n1||y==n2) cl();
else {
m=m+(n2-n1)*4;
n1++;
n2--;
sq();
}
}
void cl()
{
if(x==n1) printf("%d",m+1+y-n1);
else if(x==n2) printf("%d",m+(n2-n1)*3+1-y+n1);
else if(y==n1) printf("%d",m+(n2-n1)*3+1+n2-x);
else if(y==n2) printf("%d",m+n2-n1+1+x-n1);
}
int main()
{
int i,j;
scanf("%d%d%d",&n,&x,&y);
n1=1;
n2=n;
sq();
return 0;
} -
2014-11-27 18:26:08@
orzorzorz
-
2014-11-26 13:19:34@
orz
- 1
信息
- ID
- 1913
- 难度
- 5
- 分类
- (无)
- 标签
- 递交数
- 2027
- 已通过
- 624
- 通过率
- 31%
- 被复制
- 16
- 上传者