最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

hdu 1045 DFS 建炮臺

2023-03-11 15:30 作者:倉鼠翞  | 我要投稿

//x代表墻 . 代表空地 , 第一行輸入n和m表示接下來有一個n*m的地圖,現(xiàn)在在空地上放置炮臺,判斷空地上最多可以放幾個炮臺,炮臺橫向和豎向會相互摧毀,但墻可以隔斷
//請輸出可以放置的最大炮臺數(shù)目
//Input 4 4
// ? ? ?.x..
// ? ? ?....
// ? ? ?x...
// ? ? ?....
//Output ?5
#include<bits/stdc++.h>
using namespace std;

int n,m;
char G[100][100];
char midg[100][100];
int ans;
int temp;

void Init_G()
{
? ?for(int i=0;i<n;i++)
? ? ? ?for(int j=0;j<m;j++)
? ? ? ? ? ?G[i][j]=midg[i][j];
}

//細節(jié)啊啊啊啊?。阂⒁獾扔诹愕倪吔缜闆r是OK的
bool judge(int x,int y)
{
? ?if(x<0||y<0||x>n||y>m)
? ?{
? ? ? ?//超過邊界
? ? ? ?return false;
? ?}
? ?//判斷此這個點是否可以放置炮臺
? ?//向上走:循環(huán)結(jié)束沒有return或者中途break了說明向上走是行得通的
? ?for(int i=x;i>=0;i--)
? ?{
? ? ? ?if(G[i][y]=='p')
? ? ? ? ? ?return false;//碰到炮臺了
? ? ? ?if(G[i][y]=='x')
? ? ? ? ? ?break;//碰到墻了
? ?}
? ?//向下走
? ?for(int i=x;i<n;i++)
? ?{
? ? ? ?if(G[i][y]=='p')
? ? ? ? ? ?return false;//碰到炮臺了
? ? ? ?if(G[i][y]=='x')
? ? ? ? ? ?break;//碰到墻了
? ?}
? ?//向左走
? ?for(int i=y;i>=0;i--)
? ?{
? ? ? ?if(G[x][i]=='p')
? ? ? ? ? ?return false;//碰到炮臺了
? ? ? ?if(G[x][i]=='x')
? ? ? ? ? ?break;//碰到墻了
? ?}
? ?//向右走
? ?for(int i=y;i<m;i++)
? ?{
? ? ? ?if(G[x][i]=='p')
? ? ? ? ? ?return false;//碰到炮臺了
? ? ? ?if(G[x][i]=='x')
? ? ? ? ? ?break;//碰到墻了
? ?}
? ?//上述四個循環(huán)結(jié)束可以走到一下這一步說明四面都可以走通
? ?return true;
}

int shensou(int x,int y)
{
? ?//一般地圖問題都需要坐標的輔助
? ?//如果是空地并且判斷可以放置則放置炮臺
? ?if(G[x][y]=='.'&&judge(x,y)==true)
? ?{
? ? ? ?G[x][y] = 'p';//放置一個炮臺
? ? ? ?temp++;
? ? ? ?//遞歸深搜
? ? ? ?for(int i=0;i<n;i++)
? ? ? ? ? ?for(int j=0;j<m;j++)
? ? ? ? ? ?{
? ? ? ? ? ? ? ?if(G[i][j]=='.'&&judge(i,j)==true)
? ? ? ? ? ? ? ? ? ?shensou(i,j);
? ? ? ? ? ?}
? ?}
? ?//最底層層遞歸返回temp
? ?return temp;
}

int main()
{
? ?ans=0;
? ?scanf("%d%d",&n,&m);
? ?for(int i=0;i<n;i++)
? ? ? ?for(int j=0;j<m;j++)
? ? ? ?{

? ? ? ? ? ?cin>>G[i][j];
? ? ? ? ? ?midg[i][j]=G[i][j];
? ? ? ?}
? ?for(int i=0;i<n;i++)
? ?{
? ? ? ?for (int j = 0; j < m; j++)
? ? ? ?{
? ? ? ? ? ?printf("%c", G[i][j]);
? ? ? ?}
? ? ? ?printf("\n");
? ?}
? ?//對圖中每一個深搜取最多的炮臺數(shù)目
? ?for(int i=0;i<n;i++)
? ? ? ?for(int j=0;j<m;j++)
? ? ? ?{
? ? ? ? ? ?temp=0;
? ? ? ? ? ?Init_G();//每次深搜都初始化一下圖
? ? ? ? ? ?//從空地深搜且每次深搜重置此次中間結(jié)果
? ? ? ? ? ?if(G[i][j]=='.'&& judge(i,j)==true)
? ? ? ? ? ?{
? ? ? ? ? ? ? ?//從沒一點開始深搜統(tǒng)計此次深搜的炮臺數(shù)取最大
? ? ? ? ? ? ? ?temp=shensou(i,j);
? ? ? ? ? ? ? ?ans = max(ans,temp);
? ? ? ? ? ?}
? ? ? ?}
? ?cout<<ans;
? ?return 0;
}

hdu 1045 DFS 建炮臺的評論 (共 條)

分享到微博請遵守國家法律
峨边| 衡阳市| 芦山县| 攀枝花市| 鞍山市| 遂溪县| 内江市| 峨边| 新竹县| 晋江市| 建德市| 连州市| 祁连县| 宜都市| 巴彦淖尔市| 游戏| 桐乡市| 大荔县| 裕民县| 栾城县| 景泰县| 琼海市| 金昌市| 祁东县| 宾阳县| 万全县| 贡嘎县| 新密市| 临桂县| 银川市| 仁寿县| 佳木斯市| 新田县| 莲花县| 正安县| 文水县| 安岳县| 康定县| 农安县| 文山县| 太仓市|