题目解析
给定一张九宫格彩票
在给定 3个 坐标 输出这个坐标上的数
最后给定一个方向 输出这个方向上能获得的金币数
解题思路
暴力模拟
先去找 0 的位置 然后去填充 1 ~ 9 中未出现的数字
再直接输出给定坐标上的数
最后输出这个方向能获得到的金币数
代码
import java.io.*;
import java.math.*;
import java.util.*;
public class Main
{
public static void main(String[] args)
{
int jiang[] =
{ 10000, 36, 720, 360, 80, 252, 108, 72, 54, 180, 72, 180, 119, 36, 306, 1080, 144, 1800, 3600 };
int map[][] = new int[3 + 10][3 + 10];
boolean shu[] = new boolean[10 + 10];
// 去寻找 0 的位置
int x = 0, y = 0;
for (int i = 1; i <= 3; i++)
{
for (int j = 1; j <= 3; j++)
{
map[i][j] = sc.nextInt();
if (map[i][j] == 0)
{
x = i;
y = j;
}
shu[map[i][j]] = true;
}
}
// 给这个位置赋值
for (int i = 1; i <= 9; i++)
{
if (!shu[i])
map[x][y] = i;
}
// 输出给定坐标上的数
for (int i = 1; i <= 3; i++)
{
int a = sc.nextInt();
int b = sc.nextInt();
out.println(map[a][b]);
}
// 求出给定方向的和了
int a = sc.nextInt();
int sum = 0;
if (a <= 3)
{
for (int i = 1; i <= 3; i++)
sum += map[a][i];
} else if (a <= 6)
{
for (int i = 1; i <= 3; i++)
sum += map[i][a - 3];
} else if (a == 7)
{
for (int i = 1; i <= 3; i++)
sum += map[i][i];
} else if (a == 8)
{
for (int i = 1; i <= 3; i++)
sum += map[i][4 - i];
}
out.println(jiang[sum - 6]);
out.flush();
out.close();
}
static Scanner sc = new Scanner(System.in);
static PrintWriter out = new PrintWriter(System.out);
}