城堡(简单但费时)
来源:互联网 发布:js设置时间间隔 编辑:程序博客网 时间:2024/05/01 03:05
1
#include <cstdio>
#include <algorithm>
using namespace std;
int xiang[2500],k1=1;
int cha[55][55][4];
int k=1;
int map[55][55];
void zhaofang(int z,int y);
struct aaa{int hx;int hy;char wei;int mianji;};
aaa x1;
int main()
{
freopen("castle.in","r",stdin);
freopen("castle.out","w",stdout);
int m,n;
cin>>m>>n;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
int a;
cin>>a;
for(int k=0;k<4;k++){
cha[i][j][k]=a%2;
a/=2;
}
}
}
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
{
if(map[i][j]==0){
zhaofang(i,j);
xiang[k++]=k1;
k1=1;
}
}
k--;
cout<<k<<endl;
int max1=0;
for(int i=1;i<=k;i++)
max1=max(max1,xiang[i]);
cout<<max1<<endl;
aaa x1;
x1.mianji=0;
for(int j=1;j<=m;j++)
for(int i=n;i>=1;i--){
if(cha[i][j][1]==1)
{
if(map[i][j]!=map[i-1][j])
{if(xiang[map[i][j]]+xiang[map[i-1][j]]>x1.mianji){
x1.hx=i;
x1.hy=j;
x1.wei='N';
x1.mianji=xiang[map[i][j]]+xiang[map[i-1][j]];
}
else if(xiang[map[i][j]]+xiang[map[i-1][j]]==x1.mianji)
{
if(x1.wei=='E')
{
if(j<=x1.hy){x1.hx=i;
x1.hy=j;
x1.wei='N';
x1.mianji=xiang[map[i][j]]+xiang[map[i-1][j]];}
}
}
}
}
if(cha[i][j][2]==1&&map[i][j]!=map[i][j+1])
if(xiang[map[i][j]]+xiang[map[i][j+1]]>x1.mianji)
{
x1.hx=i;
x1.hy=j;
x1.wei='E';
x1.mianji=xiang[map[i][j]]+xiang[map[i][j+1]];
}
}
cout<<x1.hx<<" "<<x1.hy<<" "<<x1.wei<<endl;
return 0;
}
void zhaofang(int z,int y)
{
map[z][y]=k;
for(int i=0;i<=3;i++)
{
if(cha[z][y][i]==0){
if(i==0&&map[z][y-1]==0){k1++;zhaofang(z,y-1);}
else if(i==1&&map[z-1][y]==0){k1++;zhaofang(z-1,y);}
else if(i==2&&map[z][y+1]==0){k1++;zhaofang(z,y+1);}
else if(i==3&&map[z+1][y]==0){k1++;zhaofang(z+1,y);}
}
}
}
2
#include <iostream>
#include <algorithm>
#include <cstdio>
using namespace std;
int mp[55][55];
int room[2555];
int roomnum[55][55];
int sum, size, m, n;
bool v[55][55];
void dfs(int i, int j)
{
v[i][j] = true;
roomnum[i][j] = sum;
size++;
if((mp[i][j] & 1) == 0 && j > 1 && !v[i][j - 1]) dfs(i, j - 1);
if((mp[i][j] & 2) == 0 && i > 1 && !v[i - 1][j]) dfs(i - 1, j);
if((mp[i][j] & 4) == 0 && j < m && !v[i][j + 1]) dfs(i, j + 1);
if((mp[i][j] & 8) == 0 && i < n && !v[i + 1][j]) dfs(i + 1, j);
}
int main()
{
freopen("castle.in","r",stdin);
freopen("castle.out","w",stdout);
int i, j;
scanf("%d%d", &m, &n);
for(i = 1; i <= n; i++)
{
for(j = 1; j <= m; j++)
{
scanf("%d", &mp[i][j]);
}
}
sum = 0;
for(i = 1; i <= n; i++)
{
for(j = 1; j <= m; j++)
{
if(!v[i][j])
{
size = 0;
dfs(i, j);
room[sum++] = size;
}
}
}
int mx = -1;
for(i = 0; i < sum; i++)
{
mx=max(mx,room[i]);
}
printf("%d\n%d\n", sum, mx);
mx = -1;
char c;
int r, l;
for(j = 1; j <= m; j++)
{
for(i = n; i >= 1; i--)
{
if((mp[i][j] & 2) != 0 && i > 1)
{
if(roomnum[i][j] != roomnum[i - 1][j])
{
int tmp = room[roomnum[i][j]] + room[roomnum[i - 1][j]];
if(tmp > mx)
{
r = i;
l = j;
c = 'N';
mx = tmp;
}
}
}
if((mp[i][j] & 4) != 0 && j < m)
{
if(roomnum[i][j] != roomnum[i][j + 1])
{
int tmp = room[roomnum[i][j]] + room[roomnum[i][j + 1]];
if(tmp > mx)
{
r = i;
l = j;
c = 'E';
mx = tmp;
}
}
}
}
}
printf("%d\n%d %d %c\n", mx, r, l, c);
return 0;
}
- 城堡(简单但费时)
- 城堡问题(简单DFS)
- JAVA学习之路-简单的城堡游戏(一)
- c++遇到个简单而费时的小语法问题
- 【水题】城堡问题(简单DFS)
- 城堡(搜索题)
- 城堡
- 城堡
- 城堡
- MFC 自定义模态等待对话框(费时操作等待)
- Party(简单题,但很奇妙)
- hdu1269 迷宫城堡 (简单强连通分量)
- hdu(1269)迷宫城堡
- 城堡中的美女(1)
- 城堡中的美女(2)
- 城堡中的美女(3)
- P1504 积木城堡(洛谷)
- [HDU1269]迷宫城堡(Tarjan)
- android sdk manager 下面 安卓版本 很少
- 2014年50个程序员最适用的免费JQuery插件
- Knight Moves bfs
- 大姚土豆丝
- atol()函数一个可移植的版本
- 城堡(简单但费时)
- 60个很实用的jQuery代码开发技巧收集
- STL 函数对象
- C语言 键盘编码 及 用法
- 侃侃Thinking In Java
- NYOJ 811 变态最大值
- RHEL7 USB installation problem and solving
- Discuz! System Error,您当前的访问请求当中含有非法字符
- 1.快恶心死了才把BBB(REVC)gpioLedExample弄出来,重点是裸机环境构建啦!!