首页 > 其他分享 >HDU 1240 Asteroids!

HDU 1240 Asteroids!

时间:2024-07-10 13:43:21浏览次数:8  
标签:HDU target start int Asteroids vis 1240 && include

题目链接:HDU 1240 【Asteroids!】



思路

       


代码

#include <iostream>
#include <queue>
#include <stdlib.h>
#include <cstring>
#define ll long long
using namespace std;
const int N = 20;
const int M = 1e4;
struct point {
  int x, y, z, step;
}position[M],start, target;
int mp[N][N][N], n, dir[10][3] = {{1, 0, 0},  {-1, 0, 0}, {0, 1, 0},
                                  {0, -1, 0}, {0, 0, 1},  {0, 0, -1}};
bool vis[N][N][N];

bool check(int x, int y, int z) {
  return x >= 0 && x < n && y >= 0 && y < n && z >= 0 && z < n && vis[z][x][y] == 0 && mp[z][x][y] == 0;
}
void bfs() {
  queue<point> q;
  q.push(start);
  vis[start.x][start.y][start.z] = true;

  while (!q.empty()) {
    start = q.front();
    q.pop();
    if (start.x == target.x && start.y == target.y && start.z == target.z) {
      cout << n << " " << start.step << endl;
      return;
    }
    for (int i = 0; i < 6; i++) {
      point now = start;
      now.x += dir[i][0], now.y += dir[i][1], now.z += dir[i][2];
      if (check(now.x, now.y, now.z) == true) {
        vis[now.z][now.x][now.y] = true;
        now.step++;
        q.push(now);
      }
    }
  }
  cout << "NO ROUTE" << endl;
}

int main() {
  string s;
  while (cin >> s >> n) {
    memset(vis, 0, sizeof vis);

    for (int i = 0; i < n; i++) {
      for (int j = 0; j < n; j++) {
        for (int k = 0; k < n; k++) {
          char auxious;
          cin >> auxious;
          if (auxious == 'O') {
            mp[i][j][k] = 0;
          } else {
            mp[i][j][k] = 1;
          }
        }
      }
    }

    cin >> start.x >> start.y >> start.z;
    cin >> target.x >> target.y >> target.z;
    cin >> s;
    start.step = target.step = 0;

    bfs();
   }
  return 0;
}

标签:HDU,target,start,int,Asteroids,vis,1240,&&,include
From: https://www.cnblogs.com/againss/p/18293887

相关文章

  • HDU 1312 RED AND BLACK
    题目链接:HDU1312【REDANDBLACK】思路    简单搜索,输入数据时,找出起点位置,然后从七点位置开始搜素能到达的所有位置并记录,使用check()函数判断当前位置可以走吗,可以走就把当前位置放入队列中,并将当前位置修改为非黑色位置,防止重复进入。代码#include<bits/stdc+......
  • hdu物联网硬件实验1 小灯闪烁
    物联网硬件基础实验报告学院班级学号姓名日期成绩实验题目配置环境+小灯实验目的配置环境以及小灯闪烁硬件原理无关键代码及注释/*  Blink  The basic Energia example.  Turns on an LED on for one second, t......
  • hdu物联网硬件实验2 GPIO亮灯
    学院班级学号姓名日期成绩实验题目GPIO亮灯实验目的点亮三个灯闪烁频率为一秒硬件原理无关键代码及注释constintledPin1= GREEN_LED;     //thenumberoftheLEDpinconstintledPin2= YELLOW_LED;constintled......
  • HDU-4281 Judges' response(2012 ACM/ICPC Asia Regional Tianjin Online)
    HDU-4281Judges'response(2012ACM/ICPCAsiaRegionalTianjinOnline)状态压缩+01背包+区间dp题意:有n个地点,第一个地点是裁判位置,其他n-1个地点是选手的位置。裁判要给选手解决问题,每个选手都有一个时间表示解决这个选手问题所需要的时间。同样的,裁判也有一个时间,表示这......
  • Railway HDU - 3394 求调
    做个记录,如果有人愿意帮我调蒟蒻将感激不尽qwq#include<iostream>#include<iomanip>#include<cstdio>#include<vector>#include<stack>#include<queue>#include<bitset>#include<map>#include<set>#include<unorde......
  • hdu2845dp问题
    看了一眼题目,简单dp问题,但超时了一晚上,试了各种方法无法解决,最终放弃java,改用C直接过,我哭了。。。。#include<stdio.h>#include<string.h>#definemaxn200010intdp[maxn],ans[maxn],map[maxn];intmax(intx,inty){returnx>y?x:y;}intmain(){inti,j;......
  • 12400号策略投资月报:近30日收益率2.94%,年化35.77%
    ​​我现在的交易体系共包含两类策略,一类是因子策略,对数十个因子策略的日线级交易进行跟踪,每日开盘前在群里进行推送;另一类是动量策略,目前还在内测阶段。 在因子策略中,12400号策略是过去的30天表现比较好的策略,获得了2.94%的收益,而同期上证指数涨幅为-2.99%。本策略从2013......
  • hdu1421搬寝室dp
    状态转移方程if(j==2*i+1){ dp[j][i]=dp[j-2][i-1]+(val[j]-val[j-1])*(val[j]-val[j-1]); }else{ dp[j][i]=Math.min(dp[j-1][i],dp[j-2][i-1]+(val[j]-val[j-1])*(val[j]-val[j-1])); } importjava.util.Arrays;importjava.util.S......
  • HDU 3642 (扫描线、三维体积相交)
    题意在三维空间中给你n个长方体,求空间中被这些长方体覆盖至少3次以上的区域的总体积。思路这题没给数据组数T的范围,大致看了一下其他人的都是枚举z来做的,所以我这边也是同样的做法转换成二维的扫描线来做,数组ci表示被覆盖i次的区间标记,具体扫描线怎么实现可以看我上篇博客。......
  • DreamJudge-1240-首字母大写
    1.题目介绍TimeLimit:1000msMemoryLimit:256mb对一个字符串中的所有单词,如果单词的首字母不是大写字母,则把单词的首字母变成大写字母。在字符串中,单词之间通过空白符分隔,空白符包括:空格('')、制表符('\t')、回车符('\r')、换行符('\n')。输入输出格式输入描述:输......