`
believexkx
  • 浏览: 21509 次
  • 性别: Icon_minigender_2
  • 来自: 济南
社区版块
存档分类
最新评论

HDU 1241 Oil Deposits DFS

阅读更多
题意:N*M的图中有一些'@',从该位置往四周8个位置延伸,求几块互不连通的‘@’构成的块。简单的DFS便能搞定

import java.util.Scanner;

public class Main{
	static int m,n;
 	static char[][] arr=new char[101][101];
	public static void main(String[] args)
	{
		Scanner scan=new Scanner(System.in);
		while(true)
		{
			m=scan.nextInt();
			n=scan.nextInt();
			if(m==0)
				break;
			else{
				for(int i=0;i<m;i++)
				{
					String a=scan.next();
					arr[i]=a.toCharArray();
				}
				int cnt=0;
				for(int i=0;i<m;i++)
				{
					for(int j=0;j<n;j++){
						if(arr[i][j]=='@')
						{
							cnt++;
							dfs(i,j);
						}
					}
				}
				System.out.println(cnt);
			}
			
		}
	}
	static void dfs(int i,int j)
	{
		int[] dir={1,-1,0,0,1,-1,1,-1,0,0,1,-1,1,1,-1,-1};
		arr[i][j]='*';
		for(int k=0;k<8;k++)
		{
			int row=i+dir[k];
			int cul=j+dir[k+8];
			
			if(row>=0&&row<m&&cul>=0&&cul<n&&arr[row][cul]=='@')
			{
				dfs(row,cul);
			}
		}
		
	}
}
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics