Description

Both Saya and Kudo like balloons. One day, they heard that in the central park, there will be thousands of people fly balloons to pattern a big image.

They were very interested about this event, and also curious about the image.

Since there are too many balloons, it is very hard for them to compute anything they need. Can you help them?

You can assume that the image is an N*N matrix, while each element can be either balloons or blank.

Suppose element A and element B are both balloons. They are connected if:

i) They are adjacent;

ii) There is a list of element C1, C2, … , Cn, while A and C1 are connected, C1 and C2 are connected …Cn and B are connected.

And a connected block means that every pair of elements in the block is connected, while any element in the block is not connected with any element out of the block.

To Saya, element A(xa, ya) and B(xb, yb) is adjacent if |xa-xb|+|ya-yb|<=1

But to Kudo, element A(xa, ya) and element B(xb, yb) is adjacent if |xa-xb|<=1 and |ya-yb|<=1

They want to know that there’s how many connected blocks with there own definition of adjacent?

Input

The input consists of several test cases.

The first line of input in each test case contains one integer N (0<N≤100), which represents the size of the matrix.

Each of the next N lines contains a string whose length is N, represents the elements of the matrix. The string only consists of 0 and 1, while 0 represents a block and 1represents balloons.

The last case is followed by a line containing one zero.

Output

For each case, print the case number (1, 2 …) and the connected block’s numbers with Saya and Kudo’s definition. Your output format should imitate the sample output. Print a blank line after each test case.

Sample Input

5 11001 00100 11111 11010 10010 0

Sample Output

Case 1: 3 2

HINT

 

Source

山东第一届省赛



题目链接:http://acm.upc.edu.cn/problem.php?id=1929

这道题不是很难,可能初次做的同学会觉得无从下手,思路很简单

   第一步:输入
     第二部:对输入的数据加墙,即把输入的数据用0括起来;假设输入

                  1 1 0 0 1
                  0 0 1 0 0
                  1 1 1 1 1
                  1 1 0 1 0
                  1 0 0 1 0

             加墙:

                0 0 0 0 0 0 0
                0 1 1 0 0 1 0
                0 0 0 1 0 0 0
                0 1 1 1 1 1 0
                0 1 1 0 1 0 0
                0 1 0 0 1 0 0
                0 0 0 0 0 0 0

    第三步:定义两个标志位数组a[n][n],b[n][n],分别对应第一种搜索方式,和第二种搜索方式

第四步:对于第一种搜索方式:上下左右四个方向搜索,跳出条件是“无路可走”或者“标志位为1”(代表已经搜索过)——if(a[x][y]==0||b[x][y]==1){return ;}

        对于第二种搜索方式:八个方向搜索,就跳出条件与第一种一致

代码:

import java.util.Scanner;
public class Main {
public static int a[][];
public static int b[][];
public static int c[][];
public static void dfs1(int x,int y){
if(a[x][y]==0||b[x][y]==1){
return ;
}
b[x][y]=1;
dfs1(x,y+1);
dfs1(x,y-1);
dfs1(x-1,y);
dfs1(x+1,y); }
public static void dfs2(int x,int y){
if(a[x][y]==0||c[x][y]==1){
return ;
}
c[x][y]=1;
dfs2(x,y+1);
dfs2(x,y-1);
dfs2(x-1,y);
dfs2(x+1,y);
dfs2(x+1,y+1);
dfs2(x-1,y-1);
dfs2(x-1,y+1);
dfs2(x+1,y-1);
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int d=1;
while(sc.hasNextInt()){ int t=sc.nextInt();
if(t==0)
break;
a=new int[t+2][t+2];
b=new int[t+2][t+2];
c=new int[t+2][t+2];
for(int i=1;i<t+1;i++){
String s=sc.next();
for(int j=1;j<t+1;j++){
a[i][j]=s.charAt(j-1)-'0';
}
}
for(int i=0;i<t+2;i++){
for(int j=0;j<t+2;j++){
System.out.print(a[i][j]+" ");
}
System.out.println();
}
int con1=0,con2=0;
for(int i=1;i<t+1;i++){
for(int j=1;j<t+1;j++){
if(a[i][j]!=0&&b[i][j]==0){
con1++;
dfs1(i,j);
}
}
}
for(int i=1;i<t+1;i++){
for(int j=1;j<t+1;j++){
if(a[i][j]!=0&&c[i][j]==0){
con2++;
dfs2(i,j);
}
}
}
System.out.println("Case "+d+": "+con1+" "+con2);
System.out.println();
d++;
}
}
}

 

第一届山东省ACM——Balloons(java)的更多相关文章

  1. 第一届山东省ACM——Phone Number(java)

    Description We know that if a phone number A is another phone number B’s prefix, B is not able to be ...

  2. sdut 2152:Balloons(第一届山东省省赛原题,DFS搜索)

    Balloons Time Limit: 1000MS Memory limit: 65536K 题目描述 Both Saya and Kudo like balloons. One day, the ...

  3. sdut 2159:Ivan comes again!(第一届山东省省赛原题,STL之set使用)

    Ivan comes again! Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描述 The Fairy Ivan gave Say ...

  4. 第七届山东省ACM省赛

    激动人心的省赛终于结束了…平静下来再回头看真的感觉一波三折…先是赛前毫无预兆的查出突发性耳聋…伴随而来的就是左耳听力下降.轻微耳鸣.极个别情况下的头晕…不过这都还好,毕竟药物可以恢复…热身赛只过了一道 ...

  5. sdut 2153:Clockwise(第一届山东省省赛原题,计算几何+DP)

    Clockwise Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描述 Saya have a long necklace with ...

  6. sdut 2154:Shopping(第一届山东省省赛原题,水题)

    Shopping Time Limit: 1000MS Memory limit: 65536K 题目描述 Saya and Kudo go shopping together.You can ass ...

  7. sdut 2158:Hello World!(第一届山东省省赛原题,水题,穷举)

    Hello World! Time Limit: 1000MS Memory limit: 65536K 题目描述 We know that Ivan gives Saya three problem ...

  8. 第十届山东省acm省赛补题(1)

    今天第一场个人训练赛的题目有点恐怖啊,我看了半个小时多硬是一道都不会写.我干脆就直接补题去了.... 先补的都是简单题,难题等我这周末慢慢来吧... A Calandar Time Limit: 1 ...

  9. 2018年第九届山东省ACM省赛总结

    去年打完区域赛之后,面对着两个队友都去找实习的情况,我自己对今年省赛还是有点慌的.不只一次的像我的队友说明自己很慌,但是老曹跟会长都说:“没事,慌啥!”前几场训练赛因为老曹跟秋洁有面试有时候只能一个人 ...

随机推荐

  1. 【转】 XenServer架构之HA概述

    一.XenServer HA概述 XenServer HA是一套全自动功能设计,规划,安全地恢复出现问题的XenServe 主机上的虚拟机的功能组件. 启用 HA 后,XenServer 将持续监视池 ...

  2. 由Photoshop高反差保留算法原理联想到的一些图像增强算法。

    关于高反差保留的用处说明呢,从百度里复制了一段文字,我觉得写得蛮好的: 高反差保留就是保留图像的高反差部分,再说得真白些,就是保留图像上像素与周围反差比较大的部分,其它的部分都变为灰色.拿一个人物照片 ...

  3. 威佐夫博弈(Wythoff Game)

    有两堆石子,数量任意,可以不同.游戏开始由两个人轮流取石子.游戏规定,每次有两种不同的取法,一是可以在任意的一堆中取走任意多的石子:二是可以在两堆中同时取走相同数量的石子.最后把石子全部取完者为胜者. ...

  4. python读取文件夹

    import os def getFiles(rootDir): if os.path.isfile(rootDir): print(rootDir) elif os.path.isdir(rootD ...

  5. docker学习(7) docker-compose使用示例

    上一回学习了如何利用docker搭建一个mysql + java service + nginx,总共4个docker容器,如果采用docker run的方式一个一个容器去创建十分麻烦.为了能更高效的 ...

  6. [LeetCode] Unique Paths II 不同的路径之二

    Follow up for "Unique Paths": Now consider if some obstacles are added to the grids. How m ...

  7. 用vue.js学习es6(四):Symbol类型

    一.Symbol类型: 1.ES6引入了一种新的原始数据类型Symbol,表示独一无二的值.它是JavaScript语言的第七种数据类型,前六种是:Undefined.Null. 布尔值(Boolea ...

  8. 【BZOJ 3445】【Usaco2014 Feb】Roadblock

    http://www.lydsy.com/JudgeOnline/problem.php?id=3445 加倍的边一定在最短路上(否则继续走最短路). 最短路长度是O(n)的,暴力扫最短路上的每条边, ...

  9. MessageDialog

    var messageDialog = new Windows.UI.Popups.MessageDialog("Media player components unavailable&qu ...

  10. mongodb安装启动遇到的问题

    好不容易下载到了mongodb,配置的时候遇到了不少问题. 下载的是解压包,不是官网的,有一个bin目录,解压到一个自己想要的目录,如d:\mongo,首先把bin复制进来,然后创建data目录,da ...