求大神帮忙改进一下,题目是第三题
NOIP2014普级组复赛试题.pdf
(792.51 KB)
#include<cstdio>
using namespace std;
bool f[30001][30001]= {false};
int main()
{
int n,i,j,a,x,y;
scanf("%d%d%d",&n,&i,&j);
x=1;
y=1;
a=0;
f[1][1]=1;
while(a<=n*n)
{
if(x==1)
{
a++;
y++;
f[x][y]=a;
if(x==i+1&&y==j+1)
{
printf("%d",f[x][y]);
break;
}
}
if(f[x-1][y]!=0&&y<n)
{
a++;
y++;
f[x][y]=a;
if(x==i+1&&y==j+1)
{
printf("%d",f[x][y]);
break;
}
}
if(x==n)
{
a++;
y--;
f[x][y]=a;
if(x==i+1&&y==j+1)
{
printf("%d",f[x][y]);
break;
}
}
if(f[x+1][y]!=0&&y>1)
{
a++;
y--;
f[x][y]=a;
if(x==i+1&&y==j+1)
{
printf("%d",f[x][y]);
break;
}
}
if(y==n)
{
a++;
x++;
f[x][y]=a;
if(x==i+1&&y==j+1)
{
printf("%d",f[x][y]);
break;
}
}
if(f[x][y+1]!=0&&x<n)
{
a++;
x++;
f[x][y]=a;
if(x==i+1&&y==j+1)
{
printf("%d",f[x][y]);
break;
}
}
if(y==1)
{
a++;
x--;
f[x][y]=a;
if(x==i+1&&y==j+1)
{
printf("%d",f[x][y]);
break;
}
}
if(f[x][y-1]!=0&&x>1)
{
a++;
x--;
f[x][y]=a;
if(x==i+1&&y==j+1)
{
printf("%d",f[x][y]);
break;
}
}
}
return 0;
}