hiho一下 第159周 区域周长
来源:互联网 发布:软件专业论文题目 编辑:程序博客网 时间:2024/06/06 14:05
题目1 : 区域周长
时间限制:10000ms
单点时限:1000ms
内存限制:256MB
- 样例输入
6 5 2 10 0 1 2 23 1 1 3 74 3 1 3 74 3 0 3 24 3 3 0 14 5 5 5 5
- 思路:用dfs求正方形的个数。同时求相交的边的个数offset
- package hihocoder;
import java.util.*;
//https://hihocoder.com/contest/hiho159/problem/1
public class quyuzhouchang {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc=new Scanner(System.in);
String[] s1=sc.nextLine().split("\\s+");
int n=Integer.parseInt(s1[0]);
int m=Integer.parseInt(s1[1]);
int x=Integer.parseInt(s1[2]);
int y=Integer.parseInt(s1[3]);
int[][] nums=new int[n][m];
for(int i=0;i<n;i++){
String[] s=sc.nextLine().split("\\s+");
for(int j=0;j<m;j++){
nums[i][j]=Integer.parseInt(s[j]);
}
}
sc.close();
// for(int i=0;i<n;i++){
// for(int j=0;j<m;j++){
// System.out.print(nums[i][j]+" ");
//
// }
// System.out.println();
// }
helper(nums,x,y);
}
static int offset=0;
private static void helper(int[][] nums,int x,int y){
boolean[][] flag=new boolean[nums.length][nums[0].length];
int n=flag.length;
int m=flag[0].length;
// int[] res=dfs(flag,nums,x,y);
// System.out.println(res[0]+" "+ res[1]);
//System.out.println(4*res[0]-res[1]);
int c1=dfs(flag,nums,x,y);
int c2=offset;
// System.out.println(c1+" "+c2);
System.out.println(4*c1-c2);
// for(int i=0;i<n;i++){
// for(int j=0;j<m;j++){
// System.out.print(flag[i][j]+" ");
//
// }
// System.out.println();
// }
}
private static int dfs(boolean[][] flag,int[][] nums,int x,int y){
int area=0;
int n=flag.length;
int m=flag[0].length;
int dx[]={-1,1,0,0};
int dy[]={0,0,-1,1};
flag[x][y]=true;
area++;
for(int v=0;v<4;v++){
int _x=x+dx[v];
int _y=y+dy[v];
if(_x>=0 && _x<n && _y>=0 && _y<m && nums[_x][_y]==nums[x][y] ){
offset++;
if( flag[_x][_y]==false){
area+=dfs(flag,nums,_x,_y);
}
// res[0]+=dfs(flag,nums,_x,_y)[0];
// res[1]+=dfs(flag,nums,_x,_y)[1];
// System.out.println(res[0]+ " "+res[1]+ " "+_x+" "+_y);
}
}
// System.out.println(area);
return area;
}
}
描述
给定一个包含 N × M 个单位正方形的矩阵,矩阵中每个正方形上都写有一个数字。
对于两个单位正方形 a 和 b ,如果 a 和 b 有一条共同的边,并且它们的数字相等,那么 a 和 b 是相连的。
相连还具有传递性,如果 a 和 b 相连,b 和 c 相连,那么 a 和 c 也相连。
给定一个单位正方形 s,s 和与 s 相连的所有单位正方形会组成一个区域 R 。小Hi想知道 R 的周长是多少?
输入
第一行包含4个整数 N , M ,x 和 y , N 和 M 是矩阵的大小, x 和 y 是给定的单位正方形 s 的坐标。(1 ≤ N , M ≤ 100, 0 ≤ x < N , 0 ≤ y < M )
以下是一个 N × M 的矩阵 A,Aij 表示相应的正方形上的数字。(0 ≤ Aij ≤ 100)
输出
输出一个整数表示 R 的周长。
阅读全文
0 0
- hiho一下 第159周 区域周长
- hiho一下 第159周 《区域周长》题解
- hiho一下[159周]:区域周长
- hiho一下 第143周 hiho密码
- hiho一下 第141周
- hiho一下 第139周
- hiho一下第143周
- hiho一下 第145周
- hiho一下 第167周
- hiho一下 第175周
- hiho一下 第174周
- hiho一下第56周 高斯消元
- hiho一下 第113周 Fibonacci (dp)
- [hiho一下 第128周] 后缀自动机
- [hiho一下 第129周] 后缀自动机
- [hiho一下 第130周] 后缀自动机
- hiho一下 第140周 清理海报
- hiho一下 第139周 买零食
- 从头开始实现神经网络:入门
- 困倦的学生
- sklearn文档 — 1.7. 高斯过程
- Nginx--官网中文翻译(中英文对比)--12-配置https服务Configuring HTTPS servers
- 菜鸟心历之路(7)
- hiho一下 第159周 区域周长
- 设计模式之禅笔记-访问者模式
- 【多校训练】hdu 6040 Hints of sd0061 STL
- Glide加载图片流程源码解析
- Uva 10763 Foreign Exchange
- [BZOJ2171] K凹凸序列
- 动态规划:从新手到专家
- 面试题——Cookie和Session的区别
- gradle多项目构建