import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;

public class MarbleGame2 {

static int[][] board;
static int[][] tboard;
static int N;
static int[] spinfo = new int[3];
static int score;
static int tscore;// 以上下左右四个方向而来后的转向
static int[][] veer = { { 1, 3, 0, 2 }, { 3, 0, 1, 2 }, { 2, 0, 3, 1 }, { 1, 2, 3, 0 }, { 1, 0, 3, 2 } };
// 上下左右四个方向的坐标变化
static int[][] dir = { { -1, 0 }, { 1, 0 }, { 0, -1 }, { 0, 1 } };
// 下上右左四个方向的坐标变化
static int[][] dir2 = { { 1, 0 }, { -1, 0 }, { 0, 1 }, { 0, -1 } };public static void main(String[] args) throws FileNotFoundException {// TODO Auto-generated method stubScanner sc = new Scanner(System.in);sc = new Scanner(new File("src/input.txt"));int T = sc.nextInt();for (int t = 0; t < T; t++) {score = 0;N = sc.nextInt();board = new int[N][N];tboard = new int[N][N];for (int i = 0; i < N; i++) {for (int j = 0; j < N; j++) {board[i][j] = sc.nextInt();}}for (int i = 0; i < N; i++) {for (int j = 0; j < N; j++) {if ((board[i][j] % 10) != 0) {for (int k = 0; k < 4; k++) {if (board[(i + dir2[k][0] + N) % N][(j + dir2[k][1] + N) % N] == 0) {tscore = 0;CopyArray();Marble(i, j, k);if (tscore > score) {score = tscore;spinfo[0] = i;spinfo[1] = j;spinfo[2] = k;}}}}}}System.out.println("maxscore: " + score);System.out.println("startpoint: (" + spinfo[0] + "," + spinfo[1] + ")");String hitdir = "";switch (spinfo[2]) {case 0:hitdir = "下";break;case 1:hitdir = "上";break;case 2:hitdir = "右";break;case 3:hitdir = "左";break;}System.out.println("从" + hitdir + "方向其弹射");System.out.println();}
}private static void Marble(int x, int y, int d) {// TODO Auto-generated method stubtboard[x][y]--;tscore++;int veerdir = veer[(tboard[x][y] / 10) - 1][d];for (int i = 0; i < N; i++) {x = (x + dir[veerdir][0] + N) % N;y = (y + dir[veerdir][1] + N) % N;if ((tboard[x][y] % 10) != 0) {Marble(x, y, veerdir);break;}}
}private static void CopyArray() {// TODO Auto-generated method stubfor (int i = 0; i < N; i++) {for (int j = 0; j < N; j++) {tboard[i][j] = board[i][j];}}
}

}

sample input:
4
3
0 41 0
41 53 11
0 31 0
5
0 0 31 0 0
51 31 0 0 0
0 0 42 31 32
0 0 21 0 0
0 11 0 0 32
6
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
52 0 0 0 0 0
0 0 0 0 0 0
6
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
0 0 11 0 0 21
52 0 0 0 22 0
0 0 0 0 0 0

MarbleGame优化解法相关推荐

  1. 算法设计与分析(第四周)同时选最大和最小 优化解法

    思路 首先把n个数分成两部分,每部分有n/2个数 然后把第一部分的数分别与第二部分对应位置的数比较,如果左边的大,就SWAP 一轮下来之后,数列被分成两半,最小数肯定在左边,最大数肯定在右边 再从左边 ...

  2. 求0到整数N中,每个“整数对应的二进制数是回文“的个数,优化解法

    问题 参加笔试遇到的一道编程题,给定一个整数N,求从0到N,这N+1个整数中,对应二进制数是回文的个数有多少. 回文 解释一下什么是回文,就是正着读反正读都一样. 有一副经典的回文对联:上海自来水来自 ...

  3. 暴力优化解法+哈希解法——2016年第七届蓝桥杯省赛b组第八题 四平方和

    Problem describe 四平方和定理,又称为拉格朗日定理: 每个正整数都可以表示为至多4个正整数的平方和. 如果把0包括进去,就正好可以表示为4个数的平方和. 比如: 5 = 0^2 + 0 ...

  4. LeetCode 三数之和 — 优化解法

    LeetCode 三数之和 - 改进解法 题目:给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出所有满足条件且不重复 ...

  5. NC61.两数之和(map及优化解法)

    两数之和 问题描述 题目描述 给出一个整数数组,请在数组中找出两个加起来等于目标值的数, 你给出的函数twoSum 需要返回这两个数字的下标(index1,index2),需要满足 index1 小于 ...

  6. Fibonacci(斐波纳契)数列各种优化解法

    Fibonacci数列: 描述了动物繁殖数量.植物花序变化等自然规律.作为一个经典的数学问题,Fibonacci数列常作为例子出现在程序设计.数据结构与算法等多个相关学科中. 下面简单地分析一下常见的 ...

  7. 多重背包问题二进制优化解法

    如果是一般方法是把n的物品切为n个1份,这样要超时,以二进制的形式切可以优化,多的部分提出来即可. #include<bits/stdc++.h> using namespace std; ...

  8. leetcode 221. Maximal Square | 221. 最大正方形(优化的暴力解法+动态规划解法)

    题目 https://leetcode.com/problems/maximal-square/ 题解 方法1:最暴力解 O((m*n)^2) public class Solution {publi ...

  9. 【论文解读】解读TRPO论文,深度强化学习结合传统优化方法

    导读:本论文由Berkeley 的几位大神于2015年发表于 JMLR(Journal of Machine Learning Research).深度强化学习算法例如DQN或者PG(Policy G ...

最新文章

  1. 10分钟学会php面相对象基础(Ⅰ)
  2. Python代码选中文乱码
  3. Java Selenium起步
  4. 关于C++中vector初始化问题
  5. 北斗导航 | 微惯导定位系统关键技术与应用
  6. java abstractlist_Java集合类源码解析:AbstractList
  7. 费马小定理与欧拉公式
  8. java记账软件开发_Java项目之家庭记账软件
  9. 斗地主系列之牌型判断
  10. pid双闭环matlab仿真,SPWM波控制单相逆变器双闭环PID调节器的Simulink建模与仿真
  11. Python实现自动通关别踩白块儿
  12. ink css,CSS text-decoration-skip-ink属性用法及代码示例
  13. WPS 从今以后我再也不会用了 记录一下!
  14. 2020款苹果iPad Pro将搭载3D感应后置摄像头
  15. excel2016 for mac 二维表转一维表
  16. c# 指定打开某个路径下的CMD_这招太厉害了,不用鼠标也可以打开指定文件
  17. php mysql 变量赋值_PHP 变量
  18. 随机变量的相互独立性
  19. 解决Error Code: 1442. Can‘t update table ‘b05‘ in stored function/trigger becaus的问题
  20. 拍拍关闭:C2C模式走向终结?

热门文章

  1. 基于Egret的OPPO小游戏接入
  2. 一步步学习微软InfoPath2010和SP2010--第三章节--表单设计基础:处理InfoPath布局、控件和视图(6)--添加控件到Flight Delay表单
  3. OCR银行卡辨识SDK
  4. itext限制PDF的复制文本和图片
  5. torchaudio.load() 和 librosa.load() 的区别
  6. DB2数据库常用查询语句
  7. ASP.NET人事管理系统课程设计
  8. 计算机技术与科学雷震,中国科学院自动化研究所硕士生导师雷震
  9. matlab趋势面分析,第三章趋势面分析.ppt
  10. 艾宾浩斯遗忘曲线PHP,【干货】~~~艾宾浩斯遗忘曲线~~~