程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> [BZOJ 1054][HAOI 2008]移動玩具(BFS+判重)

[BZOJ 1054][HAOI 2008]移動玩具(BFS+判重)

編輯:C++入門知識

[BZOJ 1054][HAOI 2008]移動玩具(BFS+判重)


 

真是水題,感謝HAOI送的福利樣例23333

裸BFS,用string做判重,會八數碼就會這題。

注意由於隊列中狀態數很多,一定要把隊列的數組開大點!!!

 

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

#define MAXN 5

using namespace std;

mapvisit;

int tmp[MAXN][MAXN],nowstatus[MAXN][MAXN];
int xx[]={1,-1,0,0},yy[]={0,0,1,-1};

bool inMap(int x,int y)
{
    if(x<1||x>4||y<1||y>4) return false;
    return true;
}

string GetPermutationFromArray()
{
    string ans=;
    for(int i=1;i<=4;i++)
        for(int j=1;j<=4;j++)
            ans+=tmp[i][j]+'0';
    return ans;
}

void GetArrayFromPermutaion(string s)
{
    int p=0;
    for(int i=1;i<=4;i++)
        for(int j=1;j<=4;j++)
            tmp[i][j]=s[p++]-'0';
}

struct node
{
    string status;
    int step;
}q[100000],first,goal;

int h=0,t=0;

int BFS()
{
    q[t++]=first;
    visit[first.status]=true;
    while(h>s;
        first.status+=s;
    }
    for(int i=1;i<=4;i++)
    {
        cin>>s;
        goal.status+=s;
    }
    printf(%d
,BFS());
    return 0;
}

 

 

??

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