L1-072 刮刮彩票 - java

题目解析

给定一张九宫格彩票

在给定 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);
}


团体程序设计天梯赛-练习集-java

赞赏