CCF俄罗斯方块
2017-03-26 15:57
281 查看
我的想法:本题的关键在于找出板块下降的距离。用一个15行10列数组接收初始的方格图;然后定义一个4行4列数组接收板块,板块里四个方块的所在行(指的是在板块里对应的行)和所在列(指的是在最终输出方块图里所在的行)分别用两个一位数组接收。又因为初始方块图的前四行均没有方块,所以只需算出板块刚好完全落入方格图是四个方块距离还需下降的距离就好。
//CCF俄罗斯方块 package test; import java.util.Scanner; public class Test4 { /** * @param args */ public static void main(String[] args) { // 用一个15行10列数组接收初始的方格图 Scanner sc=new Scanner(System.in); int[][] fangge=new int[15][10]; for (int i = 0; i < 15; i++) { for (int j = 0; j < 10; j++) { fangge[i][j]=sc.nextInt(); } } //然后定义一个4行4列数组接收板块 int[][] bankuai=new int[4][4]; for (int i = 0; i < 4; i++) { for (int j = 0; j <4; j++) { bankuai[i][j]=sc.nextInt(); } } int column=sc.nextInt(); /*板块里四个方块的所在行(指的是在板块里对应的行) 和所在列(指的是在最终输出方块图里所在的行)分别用两个一维数组接收*/ int []x=new int[4]; int []y=new int[4]; int z=0; for (int i = 0; i < 4; i++) { for (int j = 0; j <4; j++) { if(bankuai[i][j]==1){ x[z]=i; y[z]=column-1+j; z++; } } } /*初始方块图的前四行均没有方块,所以只需算出板块刚好完全落入方格图是四个方块距离还需 *下降的距离就好*/ int[] distance=new int[4]; for (int i = 0; i < distance.length; i++) { distance[i]=3-x[i]; } for(int j=0;j<4;j++){ a:for(int i = 4; i<15; i++){ if(fangge[i][y[j]]==0){ distance[j]++; }else break a; } } //算出最小距离所对应的下标 for(int j = 0; j<4; j++ ){ if(distance[0]>distance[j]){ distance[0]=distance[j]; } } int min=distance[0]; for (int m = 0; m<4; m++) { fangge[x[m]+min][y[m]]=1; } //最终的方格图 for (int i = 0; i < 15; i++) { for (int j = 0; j < 10; j++) { System.out.print(fangge[i][j]+" "); } System.out.println(""); } } }
相关文章推荐
- CCF-CSP-2016-4-2 俄罗斯方块
- ccf2016年4月10日认证考试 俄罗斯方块问题思路
- CCF俄罗斯方块201604-2
- CCF 俄罗斯方块
- 【CCF 俄罗斯方块】
- ccf试题 俄罗斯方块
- CCF之俄罗斯方块(java)
- CCF-201604-2-俄罗斯方块
- ccf----俄罗斯方块
- CCF CSP 201604-2 俄罗斯方块(Java-100分)
- CCF 俄罗斯方块(Java)
- CCF俄罗斯方块C++版
- ccf 201604-2 俄罗斯方块
- CCF CSP认证 题解:201604-2 俄罗斯方块(Java语言原创)
- SSL P1863 俄罗斯方块 题目
- linux下使用C语言实现俄罗斯方块游戏
- 俄罗斯方块Shell
- pyQt4实现俄罗斯方块游戏
- 俄罗斯方块游戏
- 逐步讲解用C#实现俄罗斯方块之核心代码[上]