您当前的位置: 首页 >  算法

HeartFireY

暂无认证

  • 0浏览

    0关注

    334博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

2021“MINIEYE杯”中国大学生算法设计超级联赛(7)Smzzl with Greedy Snake “小“模拟

HeartFireY 发布时间:2021-08-11 21:26:20 ,浏览量:0

😊 | Powered By HeartFireY Problem Analysis

贪吃蛇游戏,操作分为顺时针、逆时针旋转 9 0 ∘ 90^\circ 90∘和直走操作,每个操作均耗时 1 1 1单位时间。不考虑蛇身体的影响,给定初始坐标和朝向,吃掉当前食物后下一个食物才会出现,求操作序列使吃每个食物耗时最短。

大模拟,当前点针对下一个食物点有 8 8 8种位置关系,每种位置关系下又有四个朝向不同的情况,一共 32 32 32​种情况。数据范围较小,模拟即可解决​。

Accepted Code

#include 
using namespace std;

void walk(int step){ for(int i = 1; i > n;
    for(int i = 1; i > nx >> ny;
        int dx = nx - sx, dy = ny - sy;
        if(dx > 0 && dy > 0){
            switch(sd){
                case 0: walk(dy); rc(sd); walk(dx); break;
                case 1: walk(dx); ru(sd); walk(dy); break;
                case 2: ru(sd); walk(dx); ru(sd); walk(dy); break;
                case 3: rc(sd); walk(dy); rc(sd); walk(dx); break;
            }
        }
        else if(dx  0){
                switch(sd){
                    case 0: rc(sd); break;
                    case 1: break;
                    case 2: ru(sd); break;
                    case 3: ru(sd); ru(sd); break;
                } 
                walk(dx);
            }
            else{
                switch(sd){
                    case 0: ru(sd); break;
                    case 1: rc(sd); rc(sd); break;
                    case 2: rc(sd); break;
                    case 3: break;
                } 
                walk(dx);
            }
        }
        sx = nx, sy = ny;
    }
    cout  t;
    while(t--) solve();
    return 0;
}
关注
打赏
1662600635
查看更多评论
立即登录/注册

微信扫码登录

0.0391s