原**:
題目中文的,意思在不懂,我只能說:"苟。。。"
好了,不扯沒用的了,直接貼**吧。
**乍一看很有意思,因為用二進位制的方法來記錄鑰匙與門的匹配,不太常見,其實是典型的狀態壓縮的題目,可以一試。
其實就是紫書上現學現賣的。。。。。。。。。。。
#include#include#includeusing namespace std;
int dx = ;
int dy = ;
char dzm = ;
char xzm = ;
struct point ;
int n, m, sx, sy;
int visit[30][30][1050];//記錄鑰匙
char map[30][30];
int bfs()}}
}}
else if (map[next.x][next.y] <= 'j'&&map[next.x][next.y] >= 'a')}}
}else
}} }
return -1;
}int main()
} int q = bfs();
if (q >= t)
printf("-1\n");
else
printf("%d\n", q);
} return 0;
}
Hdu 1429(狀態壓縮)
有鑰匙和門的 bfs 狀態壓縮 乙個十把鑰匙和鎖,分別為a,b.j 當所用的步數小於 t即可。include include include includeusing namespace std int n,m,t,ans char map 21 21 int dir 4 2 int vis 21 ...
hdu1429位運算狀態壓縮
第一次接觸位運算的狀態壓縮,這題本來我是用優先佇列寫的,用vector儲存鑰匙。本來以為會超時,沒想到是記憶體超限。無奈,找大神,發現正確姿勢是狀態壓縮。這題用來學 位運算的狀態壓縮是相當不錯,很好理解。題意是乙個人在乙個迷宮裡逃生,迷宮有鎖,有鑰匙,相應的鑰匙開相應的鎖。共有10種鎖。利用位運算就...
hdu1429(廣搜 狀態壓縮(位壓縮))
一開始用廣搜來做,超記憶體了,然後參照網上的資料,用位壓縮來做,頭一次做這種題,但個人感覺還是很好理解的,稍微看了一下就懂了,然後自己寫了個程式。思路 乙個有10把鑰匙,用10個位來表示,例如100 4 表示只有第三把鑰匙,1100 12 表示有第三四把鑰匙。如下 include include i...