纵横放火柴

package test;

import java.util.Scanner;

public class 纵横放火柴游戏 {

    public static void main(String arg[])
    {
        Scanner input = new Scanner(System.in);
        char[][] arr = new char[3][4];
        int n = input.nextInt();
        
        while(n-- != 0)
        {
            for(int i = 0;i < 3;i++)
            {
                String str = input.next();
                arr[i] = str.toCharArray();
            }
            Putmatch(arr);
        }
    }
    //计算最佳放置法,选择第一个空格放置‘-’或‘1’,能放的就输出
    private static void Putmatch(char[][] arr) {
        // TODO Auto-generated method stub
        for(int i = 0;i < 3;i++)
        {
            for(int j = 0;j < 4;j++)
            {
                if(arr[i][j] == '0')
                {
                    arr[i][j] = '-';
                    if(isOk(arr,i,j))
                    {
                        System.out.println(i + "" + j + "" + '-');
                        return;
                    }
                    arr[i][j] = '0';
                    arr[i][j] = '1';
                    if(isOk(arr,i,j))
                    {
                        System.out.println(i + "" + j + "" + '1');
                        return;
                    }
                    arr[i][j] = '0';
                }
            }
        }
    }
    //判断该放置法是否符合条件,查询当前位置所放的方向上是否有同方向且无阻拦
    private static boolean isOk(char[][] arr, int i, int j) {
        // TODO Auto-generated method stub
        if(arr[i][j] == '-')
        {
            for(int k = j-1;k >= 0;k--)
            {
                if(arr[i][k] == '-')
                {
                    return false;
                }else if(arr[i][k] == '1')
                {
                    return true;
                }
            }
            for(int l = j+1;l < 4;l++)
            {
                if(arr[i][l] == '-')
                {
                    return false;
                }else if(arr[i][l] == '1')
                {
                    return true;
                }
            }
        }else if(arr[i][j] == '1')
        {
            for(int m = i-1;m >=0;m--)
            {
                if(arr[m][j] == '1')
                {
                    return false;
                }else if(arr[m][j] == '-')
                {
                    return true;
                }
            }
            for(int n = i+1;n < 3;n++)
            {
                if(arr[n][j] == '1')
                {
                    return false;
                }else if(arr[n][j] == '-')
                {
                    return true;
                }
            }
        }
        return true;
    }

}
原文地址:https://www.cnblogs.com/ljs-666/p/8645121.html