問題省略……
dfs解決炸彈人
#include#includeusing namespace std;
char a[20][21];//用來儲存地圖
int book[20][20],maxn,mx,my,n,m;
int getnum(int i,int j)
x=i,y=j;
while(a[x][y]!='#')
x=i,y=j;
while(a[x][y]!='#')
x=i,y=j;
while(a[x][y]!='#')
}void dfs(int x,int y) ,//向右
,//向下
,//向左
};//向上
int sum=getnum(x,y);
if(sum>maxn)
int tx,ty;
for(int k=0;k<=3;k++)
} return ;
}int main()
bfs解決炸彈人
#include#includeusing namespace std;
struct note ;
char a[20][20];//用來儲存地圖
int getnum(int i,int j)
x=i,y=j;
while(a[x][y]!='#')
x=i,y=j;
while(a[x][y]!='#')
x=i,y=j;
while(a[x][y]!='#')
return sum;}
int main() ;
//定義乙個用於表示走的方向的陣列
int next[4][2]=,//向右
,//向下
,//向左
};//向上
int n,m,startx,starty;
cin>>n>>m>>startx>>starty;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
cin>>a[i][j];
//佇列初始化
int head=1;
int tail=1;
//往佇列插入迷宮入口座標
que[tail].x=startx;
que[tail].y=starty;
tail++;
book[startx][starty]=1;
int max=getnum(startx,starty); //當前點可以消滅的敵人數
int mx=startx; //當前點的橫座標
int my=starty; //當前點的縱座標
int tx,ty;
while(headn-1 || ty<0 || ty>m-1)
continue;
//判斷是否為障礙物 或者已經在路徑中
if(a[tx][ty]=='.' && book[tx][ty]==0)
}} head++;//此地方不能忘記,當乙個點拓展結束,head++才能對後面的點再進行拓展
} printf("%d %d %d",mx,my,max);
getchar();getchar();
return 0;
}
節選自啊哈磊的《啊哈!演算法》
炸彈人 模擬,列舉
題目描述 id 12033 炸彈人標籤 模擬詳情 小哼最近愛上了 炸彈人 遊戲。你還記得在小霸王遊戲機上的炸彈人嗎?用放置炸彈的方法來消滅敵人。需將畫面上的敵人全部消滅後,並找到隱藏在牆裡的暗門才能過關。現在有乙個特殊的關卡如下。你只有一枚炸彈,但是這枚炸彈威力超強 殺傷距離超長,可以消滅殺傷範圍內...
206 12 15炸彈人開發日誌
目前的正在執行的計畫 1.支援物品組,以實現乙個物品能夠占用多個方格 2.精靈編輯 3.物品編輯 4.讀寫地圖 5.設定玩家起始位置 矩形邊框顏色 字型顏色 字型大小 6.設定背景與碰撞物 7.設定獎品 資料 放棄精靈編輯器,與物品編輯器是因為這兩樣東西雖然是小東西,卻占用了將近乙個星期時間。而我發...
2007 01 24炸彈人開發日誌
解決了兩個關於移動與碰撞的bug 1 bug描述 當炸彈在接近牆的時候,人就不能從接近牆的那一邊把炸彈踢走 原因 人物在產生碰撞的時候,沒有移動到整數格仔內 在炸彈碰撞檢測的時候加了邊介審查,導致直接在邊介附近停止,因為移動的碰撞檢測 是一但發現則立即停止的嚴格檢查。2 bug描述 人物在產生平移效...