网易游戏2016实习生招聘在线笔试之连连看
2015-05-18 15:22
357 查看
连连看
时间限制:10000ms单点时限:1000ms
内存限制:256MB
描述
import java.util.LinkedList; import java.util.Queue; import java.util.Scanner; public class Main { public static void main(String[] argv){ Scanner in = new Scanner(System.in); int x = in.nextInt(); int y = in.nextInt(); int [][] source = new int[x+2][y+2]; int [][] R_has = new int[x+2][y+2]; for(int i=1; i<=x;i++){ for(int j=1; j<=y;j++){ source[i][j]=in.nextInt(); } } int a = in.nextInt(); int b = in.nextInt(); int c = in.nextInt(); in.close(); int Num = source[a][b]; int[][][] dis = new int[4][x+2][y+2]; Queue<Integer> temp = new LinkedList<Integer>(); Queue<Integer> result = new LinkedList<Integer>(); temp.offer(a); temp.offer(b); dis[0][a][b]=1; dis[1][a][b]=1; dis[2][a][b]=1; dis[3][a][b]=1; while(true){ if(temp.size()==0) break; int N_x = temp.poll(); int N_y = temp.poll(); System.out.println("temp 出队:"+N_x+N_y+" 并开始匹配"); //up adding if(N_x-1>=0&&(source[N_x-1][N_y]==0||source[N_x-1][N_y]==Num)){ System.out.println("up匹配: "); int min=0; if(dis[2][N_x][N_y]>0) min=dis[2][N_x][N_y]; if(dis[1][N_x][N_y]>0){ if(min==0) min=dis[1][N_x][N_y]+1; else{ if(dis[1][N_x][N_y]+1<min) min=dis[1][N_x][N_y]+1; } } if(dis[3][N_x][N_y]>0){ if(min==0) min=dis[3][N_x][N_y]+1; else{ if(dis[3][N_x][N_y]+1<min) min=dis[3][N_x][N_y]+1; } } if(min<=c){ if(source[N_x-1][N_y]==0){ int S_up=dis[2][N_x-1][N_y]; dis[2][N_x-1][N_y]=min; if( S_up!=min){ System.out.println("temp 队列 add:"+(N_x-1)+" "+N_y); temp.offer(N_x-1); temp.offer(N_y); } } else{ if(R_has[N_x-1][N_y]==0){ result.add(N_x-1); result.add(N_y); R_has[N_x-1][N_y]=1; } } } } //down adding if(N_x+1<x+2&&(source[N_x+1][N_y]==0||source[N_x+1][N_y]==Num)){ System.out.println("down匹配: "); int min=0; if(dis[0][N_x][N_y]>0) min=dis[0][N_x][N_y]; if(dis[1][N_x][N_y]>0){ if(min==0) min=dis[1][N_x][N_y]+1; else{ if(dis[1][N_x][N_y]+1<min) min=dis[1][N_x][N_y]+1; } } if(dis[3][N_x][N_y]>0){ if(min==0) min=dis[3][N_x][N_y]+1; else{ if(dis[3][N_x][N_y]+1<min) min=dis[3][N_x][N_y]+1; } } if(min<=c){ if(source[N_x+1][N_y]==0){ int S_down=dis[0][N_x+1][N_y]; dis[0][N_x+1][N_y]=min; if(S_down!=min){ System.out.println("temp 队列 add:"+(N_x+1)+" "+N_y); temp.offer(N_x+1); temp.offer(N_y); } } else{ if(R_has[N_x+1][N_y]==0){ result.add(N_x+1); result.add(N_y); R_has[N_x+1][N_y]=1; } } } } //right adding if(N_y+1<y+2&&(source[N_x][N_y+1]==0||source[N_x][N_y+1]==Num)){ System.out.println("right匹配: "); int min=0; if(dis[3][N_x][N_y]>0) min=dis[3][N_x][N_y]; if(dis[0][N_x][N_y]>0){ if(min==0) min=dis[0][N_x][N_y]+1; else{ if(dis[0][N_x][N_y]+1<min) min=dis[0][N_x][N_y]+1; } } if(dis[2][N_x][N_y]>0){ if(min==0) min=dis[2][N_x][N_y]+1; else{ if(dis[2][N_x][N_y]+1<min) min=dis[2][N_x][N_y]+1; } } //System.out.println("min: "+min); if(min<=c){ if(source[N_x][N_y+1]==0){ int S_right=dis[3][N_x][N_y+1]; dis[3][N_x][N_y+1]=min; if(S_right!=min){ System.out.println("temp 队列 add:"+N_x+" "+(N_y+1)); temp.offer(N_x); temp.offer(N_y+1); } } else{ if(R_has[N_x][N_y+1]==0){ result.add(N_x); result.add(N_y+1); R_has[N_x][N_y+1]=1; } } } } //left adding if(N_y-1>=0&&(source[N_x][N_y-1]==0||source[N_x][N_y-1]==Num)){ System.out.println("left匹配: "); int min=0; if(dis[1][N_x][N_y]>0) min=dis[1][N_x][N_y]; if(dis[0][N_x][N_y]>0){ if(min==0) min=dis[0][N_x][N_y]+1; else{ if(dis[0][N_x][N_y]+1<min) min=dis[0][N_x][N_y]+1; } } if(dis[2][N_x][N_y]>0){ if(min==0) min=dis[2][N_x][N_y]+1; else{ if(dis[2][N_x][N_y]+1<min) min=dis[2][N_x][N_y]+1; } } if(min<=c){ if(source[N_x][N_y-1]==0){ int S_left=dis[1][N_x][N_y-1]; dis[1][N_x][N_y-1]=min; if(S_left!=min){ System.out.println("temp 队列 add:"+N_x+" "+(N_y-1)); temp.offer(N_x); temp.offer(N_y-1); } } else{ if(R_has[N_x][N_y-1]==0){ result.add(N_x); result.add(N_y-1); R_has[N_x][N_y-1]=1; } } } } System.out.println(""); } /* for(Integer string : result){ System.out.println(string); } */ System.out.println("最终的结果: "+(result.size()-2)/2); } }
View Code
相关文章推荐
- 网易游戏2016实习生招聘在线笔试——题目1 : 推箱子
- hihocoder 网易游戏2016实习生招聘在线笔试 解题报告
- 网易游戏2016实习生招聘在线笔试:A 推箱子
- 网易游戏2016实习生招聘在线笔试 推箱子
- 网易游戏2016校园招聘“游戏研发&平台开发”在线笔试——C题 Complicated Expression
- 网易游戏2016实习生招聘笔试题目--井字棋
- 网易游戏2016校园招聘“游戏研发&平台开发”在线笔试——D题 Difficult Player Grouping
- 网易游戏2016实习生招聘笔试题目--推箱子
- 网易游戏2016校园招聘“游戏研发&平台开发”在线笔试——B题 Best Compression Algorithms
- 网易游戏2016校园招聘“游戏研发&平台开发”在线笔试——A题 Amusing Digits
- 网易互娱2017实习生招聘游戏研发工程师在线笔试第二场(图像处理)
- 网易互娱2017实习生招聘游戏研发工程师在线笔试第二场(一起消消毒)
- 网易互娱2017实习生招聘游戏研发工程师在线笔试第二场(神奇的数)
- 连连看——网易游戏2016实习生招聘
- 网易游戏2016研发实习生招聘在线编程题目 推箱子
- 网易互娱2017实习生招聘游戏研发工程师在线笔试第二场 C
- 2017网易游戏雷火盘古实习生招聘笔试(4)赛马
- 网易互娱2017实习生招聘在线笔试第一场-2源代码编译
- 网易互娱2017实习生招聘在线笔试第一场-电子数字
- 牛客网-2017网易游戏雷火盘古实习生招聘笔试真题-解题思路及源码