程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> HDU 2579 Dating with girls(2)

HDU 2579 Dating with girls(2)

編輯:C++入門知識

HDU 2579 Dating with girls(2)


補考跪了。果然我討厭網絡技術……學什麼cisco的軟件操作。簡直!!!

計算機網絡的東西講得又淺。發的又是一本純英文的《計算機網絡》的書。真裝逼的學校。

字典一樣厚,我真想砸死你!真是看得起我們,985,211的本科都沒這麼屌。

趕緊做幾道題壓壓驚。隨機翻一頁,題目倒是不錯,約會……


題意簡單,就是找妹子約會(Orz)。迷宮的#代表石頭,在k的倍數的時候不能走。

記得vis為三維,因為可以往回走。

接下來就是一個bfs而已。


#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include

#define INF 0x7fffffff
#define eps 1e-8
#define LL long long
#define PI 3.141592654
#define CLR(a,b) memset(a,b,sizeof(a))
#define FOR(i,a,b) for(int i=a;i=b;i--)
#define sf scanf
#define pf printf
#define all(v) (v).begin(),(v).end()
#define acfun std::ios::sync_with_stdio(false)

#define SIZE (100 +2)
#define MOD 1000000007
using namespace std;

char g[SIZE][SIZE];
int t,n,m;
int xx[]={0,0,-1,1};
int yy[]={-1,1,0,0};

struct node
{
    int x,y,s;
    void init(int _x,int _y,int _s=0)
    {
        x=_x,y=_y,s=_s;
    }
};
node Y,G;

void bfs()
{
    bool vis[SIZE][SIZE][11];
    CLR(vis,0);
    queueq;

    q.push(Y);
    vis[Y.x][Y.y][0]=1;

    while(!q.empty())
    {
        node tmp=q.front();
        q.pop();
        //pf("%d %d=%d\n",tmp.x+1,tmp.y+1,tmp.s);
        if(tmp.x==G.x&&tmp.y==G.y)
        {
            pf("%d\n",tmp.s);
            return;
        }
        FOR(k,0,4)
        {
            int x=tmp.x+xx[k];
            int y=tmp.y+yy[k];
            int s=tmp.s+1;
            if(x<0||x>=n||y<0||y>=m||vis[x][y][s%t])
                continue;
            if(g[x][y]=='#'&&s%t!=0)continue;
            node now;
            vis[x][y][s%t]=1;
            now.init(x,y,s);
            q.push(now);
        }
    }
    puts("Please give me another chance!");
}

int main()
{
    int T;
    sf("%d",&T);
    while(T--)
    {
        sf("%d%d%d",&n,&m,&t);
        FOR(i,0,n)
        {
            sf("%s",g[i]);
            FOR(j,0,m)
            {
                if(g[i][j]=='Y')
                    Y.init(i,j);
                else if(g[i][j]=='G')
                    G.init(i,j);
            }
        }
        bfs();
    }
    return 0;
}


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved