参考后学到了很多东西
引入最基本的类
import java.util.Scanner;
public class Num5 {
/**
* @param args
*/
以下是主函数
public static void main(String[] args) {
// TODO Auto-generated method stub
基本输入输出类
Scanner cin=new Scanner(System.in);
读入整数 N
int n=Integer.parseInt(cin.nextLine());
输入的字符串
String s;
标记量
boolean mark = false;
搜索内部那些地方可以填火柴时用到
int tempi=0,tempj = 0;
用来表示当前火差上下左右的不同情况
int left,right,top,bottom;
表示所填的那张表
int arr[][]=new int[3][4];
控制输入的种数
int num=0;
初始化那张表
while(num<n){
for(int i=0;i<3;i++){
s=cin.nextLine();
for(int j=0;j<4;j++){
if(s.charAt(j)=='-')
arr[i][j]=2;
else
arr[i][j]=Integer.parseInt(String.valueOf(s.charAt(j)));
}
}
for(int i=0;i<3;i++){
for(int j=0;j<4;j++){
if(arr[i][j]==0){
left=right=top=bottom=-1;
if(j==0){
tempj=1;
while(tempj<4){//寻找同一行中不为空的下一根火柴
if(arr[i][tempj]==0)tempj++;//下一个为空时跳过去
else{
right=arr[i][tempj];
// System.out.print(left+""+right);
break;
}
}//end while
}
else if(j==3){
tempj=2;
while(tempj>=0){//寻找同一行中不为空的下一根火柴
if(arr[i][tempj]==0)tempj--;//下一个为空时跳过去
else{
left=arr[i][tempj];
//System.out.print(left+""+right);
break;
}
}//end while
}
else if(j==1){
left=arr[i][j-1];
if(arr[i][j+1]==0)
right=arr[i][j+2];
else
right=arr[i][j+1];
// System.out.print(left+""+right);
}
else {
if(arr[i][j-1]==0)
left=arr[i][j-2];
else
left=arr[i][j-1];
right=arr[i][j+1];
//System.out.print(left+""+right);
}
if(i==0){
if(arr[i+1][j]==0)
bottom=arr[i+2][j];
else
bottom=arr[i+1][j];
//System.out.print(top+""+bottom);
}
else if(i==1){
top=arr[i-1][j];
bottom=arr[i+1][j];
//System.out.print(top+""+bottom);
}
else{
if(arr[i-1][j]==0)
top=arr[i-2][j];
else
top=arr[i-1][j];
//System.out.print(top+""+bottom);
}
开始填火柴采用枚举
这个是很难想到的但从算法实现角度来说这个题不难
if(top==-1&&left==-1){
if(bottom==2)
{
System.out.println(i+""+j+"1");
mark=true;
break;
}
if(right==1)
{
System.out.println(i+""+j+"2");
mark=true;
break;
}
}
else if(left==-1&&bottom==-1){
if(top==2)
{
System.out.println(i+""+j+"1");
mark=true;
break;
}
if(right==1)
{
System.out.println(i+""+j+"2");
mark=true;
break;
}
}
else if(right==-1&&top==-1){
if(bottom==2)
{
System.out.println(i+""+j+"1");
mark=true;
break;
}
if(left==1)
{
System.out.println(i+""+j+"2");
mark=true;
break;
}
}
else if(right==-1&&bottom==-1){
if(top==2)
{
System.out.println(i+""+j+"1");
mark=true;
break;
}
if(left==1)
{
System.out.println(i+""+j+"2");
mark=true;
break;
}
}
else if(top==-1){
if(bottom==2)
{
System.out.println(i+""+j+"1");
mark=true;
break;
}
if(left==1&&right==1)
{
System.out.println(i+""+j+"2");
mark=true;
break;
}
}
else if(bottom==-1){
if(top==2)
{
System.out.println(i+""+j+"1");
mark=true;
break;
}
if(left==1&&right==1)
{
System.out.println(i+""+j+"2");
mark=true;
break;
}
}
else if(left==-1){
if(top==2&&bottom==2)
{
System.out.println(i+""+j+"1");
mark=true;
break;
}
if(right==1)
{
System.out.println(i+""+j+"2");
mark=true;
break;
}
}
else if(right==-1){
if(top==2&&bottom==2)
{
System.out.println(i+""+j+"1");
mark=true;
break;
}
if(left==1)
{
System.out.println(i+""+j+"2");
mark=true;
break;
}
}
else {
if(top==2&&bottom==2)
{
System.out.println(i+""+j+"1");
mark=true;
break;
}
if(left==1&&right==1)
{
System.out.println(i+""+j+"2");
mark=true;
break;
}
}
}//end if
}//end for内循环
if(mark) break;
}//end for外循环
num++;
}//end while
}
}