hdu 4740 The Donkey of Gui Zhou
2024-08-28 17:23:52
1.扯犊子超多if else 判断的代码,华丽丽的TLE。
#include<stdio.h>
#include<string.h>
#define N 1010
int map[N][N];
int f[][]= {,,,,,-,-,};
struct Node
{
int x,y;
int f;
};
int main()
{
int n;
Node tig,don;
while(scanf("%d",&n)!=EOF&&n)
{
memset(map,,sizeof(map));
scanf("%d %d %d",&don.x,&don.y,&don.f);
map[don.x][don.y]=-;
scanf("%d %d %d",&tig.x,&tig.y,&tig.f);
map[tig.x][tig.y]=-;
int flag1=,flag2=;
while(flag1||flag2)
{
//printf("#%d %d\n",don.x,don.y);
//printf("$%d %d\n",tig.x,tig.y);
if(don.x==tig.x&&don.y==tig.y)
{
printf("%d %d\n",don.x,don.y);
break;
}
if(flag1)
{
int x=don.x+f[don.f][];
int y=don.y+f[don.f][];
//printf("$%d %d\n",x,y);
if(x>=&&x<n&&y>=&&y<n&&map[x][y]!=-&&map[x][y]!=-)
{
//printf("sdafj\n");
don.x=x;
don.y=y;
}
else if(y>=n)
{
x+=;
if(x>=&&x<n&&map[x][don.y]!=-&&map[x][don.y]!=-)don.x=x;
else flag1=;
don.f=;
}
else if(x<)
{
y+=;
if(y>=&&y<n&&map[don.x][y]!=-&&map[don.x][y]!=-)don.y=y;
else flag1=;
don.f=;
}
else if(y<)
{
x-=;
if(x>=&&x<n&&map[x][don.y]!=-&&map[x][don.y]!=-)don.x=x;
else flag1=;
don.f=;
}
else if(x>=n)
{
y-=;
if(y>=&&y<n&&map[don.x][y]!=-&&map[don.x][y]!=-)don.y=y;
else flag1=;
don.f=;
}
//else flag1=0;
if(!map[don.x][don.y])map[don.x][don.y]=-;
else if(map[don.x][don.x]==-)map[don.x][don.y]=-;
}
if(flag2)
{
int x=tig.x+f[tig.f][];
int y=tig.y+f[tig.f][];
//printf();
if(x>=&&x<n&&y>=&&y<n&&map[x][y]!=-&&map[x][y]!=-)
{
tig.x=x;
tig.y=y;
}
else if(y>=n)
{
x-=;
if(x>=&&x<n&&map[x][tig.y]!=-&&map[x][tig.y]!=-)tig.x=x;
else flag2=;
tig.f=;
}
else if(x<)
{
y-=;
if(y>=&&y<n&&map[tig.x][y]!=-&&map[tig.x][y]!=-)tig.y=y;
else flag2=;
tig.f=;
}
else if(y<)
{
x+=;
if(x>=&&x<n&&map[x][tig.y]!=-&&map[x][tig.y]!=-)tig.x=x;
else flag2=;
tig.f=;
}
else if(x>=n)
{
y+=;
if(y>=&&y<n&&map[tig.x][y]!=-&&map[tig.x][y]!=-)tig.y=y;
else flag2=;
tig.f=;
}
//else flag2=0;
if(!map[tig.x][tig.y])map[tig.x][tig.y]=-;
else if(map[tig.x][tig.y]==-)map[tig.x][tig.y]=-;
}
} if(!flag1&&!flag2)printf("-1\n");
}
return ;
}
2.思路:
1.如果donkey和tiger能按指定路线行走,判断是否同时到达同意地点
2.如果不能继续行走(遇到自己以前走过的或墙壁),则转弯。
donkey向右转,tiger向左转,转后仍不能前进,则停下。
3.一个停下,另一个可以继续,直到都停下或同时到达同意地点。
不知道哪里错了(WA)
#include<stdio.h>
#include<string.h>
#define N 1100
int map[N][N];
int f[][]= {,,,,,-,-,};
struct Node
{
int x,y;
int f;
};
int main()
{
int n; while(scanf("%d",&n)!=EOF&&n)
{
Node tig,don;
memset(map,,sizeof(map));
scanf("%d %d %d",&don.x,&don.y,&don.f);
map[don.x][don.y]=-;
scanf("%d %d %d",&tig.x,&tig.y,&tig.f);
map[tig.x][tig.y]=-;
int flag1=,flag2=;
while(flag1||flag2)
{
//printf("#%d %d\n",don.x,don.y);
//printf("$%d %d\n",tig.x,tig.y);
if(don.x==tig.x&&don.y==tig.y)
{
printf("%d %d\n",don.x,don.y);
break;
}
if(flag1)
{
int x=don.x+f[don.f][];
int y=don.y+f[don.f][];
//printf("$%d %d\n",x,y);
if(x>=&&x<n&&y>=&&y<n&&map[x][y]!=-&&map[x][y]!=-)
{
//printf("sdafj\n");
don.x=x;
don.y=y;
}
else//换方向
{
if(don.f==)
don.f=;
else
don.f++;
x=don.x+f[don.f][];
y=don.y+f[don.f][];
if(x>=&&x<n&&y>=&&y<n&&map[x][y]!=-&&map[x][y]!=-)
{
don.x=x;
don.y=y;
}
else flag1=;
}
if(flag1)
if(!map[don.x][don.y])map[don.x][don.y]=-;
else if(map[don.x][don.x]==-)map[don.x][don.y]=-;
}
if(flag2)
{
int x=tig.x+f[tig.f][];
int y=tig.y+f[tig.f][];
//printf();
if(x>=&&x<n&&y>=&&y<n&&map[x][y]!=-&&map[x][y]!=-)
{
tig.x=x;
tig.y=y;
}
else
{
if(!tig.f)
tig.f=;
else tig.f--;
x=tig.x+f[tig.f][];
y=tig.y+f[tig.f][];
if(x>=&&x<n&&y>=&&y<n&&map[x][y]!=-&&map[x][y]!=-)
{
tig.x=x;
tig.y=y;
}
else flag2=;
}
if(flag2)
if(!map[tig.x][tig.y])map[tig.x][tig.y]=-;
else if(map[tig.x][tig.y]==-)map[tig.x][tig.y]=-;
}
}
if(!flag1&&!flag2)printf("-1\n");
}
return ;
}
最新文章
- cookie被禁用session怎么办
- 用php创建mysql数据库
- linux-15基础命令之-用户与用户组(useradd,userdel,usermod,passwd,groupadd)
- 论文笔记之:Co-saliency Detection via A Self-paced Multiple-instance Learning Framework
- Pyhton开发堡垒机之paramiko模块
- Jstat在分析java的内存GC时的应用
- 越狱Season 1- Episode 18: Bluff
- ANDROID_MARS学习笔记_S02_007_Animation第一种使用方式:代码
- js-浏览器DOM
- ckplayer 项目实际应用代码整理,支持标清,高清,超清切换!
- OC中文件的操作
- springMVC源码分析--ControllerClassNameHandlerMapping(九)
- PYQT窗口可视化编程
- LINUX 查看当前系统的内存使用情况 free
- python发送邮件(在邮件中显示HTMLTestRunner生成的报告)
- 24.HashSet
- 转:Java 集合详解
- 第二节:Linux下检出项目和提交项目
- EVA索赔系统JAVA拦截例外站点
- 【LOJ】#2077. 「JSOI2016」飞机调度