UVA 232

来源:互联网 发布:securecrt mac 注册码 编辑:程序博客网 时间:2024/06/05 15:11


题目描述:点击打开链接



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



1 0