UVA 232


题目描述:点击打开链接



/*
	思路:输入存入二维字符数组里,开辟一个整型二维数组标记一下数组,
	只需要判断一下出界的情况还有黑格的情况便可。
	横向输出比较简单,判断一下黑格然后获取字符串输出便可。
	竖向输出多建立了一个布尔数组,用来判断该字符是否输出过。
	该题输出比较麻烦,输出差一点都会PE。
 */

import java.util.Scanner;
public class Main
{
	public static void main(String[] args) 
	{
		Scanner cin = new Scanner(System.in);
		int Case=1;
		while(true)
		{
			int a=cin.nextInt();
			if(a==0)break;
			int b=cin.nextInt();
			
			char [][]arr=new char[a][b];
			for(int i=0;i<a;++i)
				arr[i]=cin.next().toCharArray();
		
			int cnt=1;
			int [][]mark=new int[a][b];
			for(int i=0;i<a;++i)
				for(int j=0;j<b;++j)
				{
					if(arr[i][j]=='*')
						continue;
					else if((j-1<0||i-1<0)||(arr[i][j-1]=='*'||arr[i-1][j]=='*'))
						mark[i][j]=cnt++;
				}
			
			if(Case>1)System.out.println();
			System.out.println("puzzle #"+(Case++)+":");
			System.out.println("Across");
			for(int i=0;i<a;++i)
				for(int j=0;j<b;++j)
				{
					if(arr[i][j]=='*')continue;
					cnt=j;
					String str="";
					while(cnt < b && arr[i][cnt]!='*')
						str+=arr[i][cnt++];
					System.out.printf("%3d.%s\n",mark[i][j],str);
					j=cnt;
				}
			
			boolean [][]bool=new boolean[a][b];
			System.out.println("Down");
			for(int i=0;i<a;++i)
			{
				for(int j=0;j<b;++j)
				{
					if(arr[i][j]=='*')continue;
					if(bool[i][j])continue;
					cnt=i;
					String str="";
					while(cnt < a && arr[cnt][j]!='*')
					{
						bool[cnt][j]=true;
						str+=arr[cnt++][j];
					}
					System.out.printf("%3d.%s\n",mark[i][j],str);
				}
			}
			
		}
	}
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值