CCF 消除类游戏
来源:互联网 发布:服务器与数据库的区别 编辑:程序博客网 时间:2024/03/29 10:18
/***@author StormMaybin*@Date 2016-09-09*/
生命不息,奋斗不止!
题目描述
样例输入输出
样例说明
题目分析
简直水题,直接暴力模拟之即可,但是唯一要注意的是一个棋子可能在某一行和某一列同时被消去,那么如果直接在原map上面修改的话会导致小错误,具体是什么错误呢 我们来看个例子:
2 2 2
2 3 3
2 1 1
假如map数组是这个样子,那么我们要开始先消除行,变成
0 0 0
2 3 3
2 1 1
然后,看看这个map数组,好像没什么要消除的了,然后输出,恭喜入坑,答案错误,不过ccf是oi赛制,还是会得一点点辛苦分的,那么看看一个巧妙的处理方式吧!
其实我们可以定义一个和map一样大小的数组来投影map数组中相同的行列,比如
2 2 2
2 3 3
2 1 1
我们定义一个数组arr初始化
1 1 1
1 1 1
1 1 1
然后我们来投影map满足条件的行列(如果相同在arr数组改成0)那么投影完arr数组变为
0 0 0
0 1 1
0 1 1
然后根据arr数组来修改map得到正确答案,哈哈哈哈
AC代码
import java.util.Arrays;import java.util.Scanner;/*** * 思路 我们可以把相同的行和列投影到另外一个数组中去 ! * @author StormMaybin */public class Test2{ private Scanner scan; public Test2() { scan = new Scanner(System.in); while (scan.hasNext()) { int n = scan.nextInt(); int m = scan.nextInt(); int[][] map = new int[31][31]; int[][] flags = new int[31][31]; //初始化投影 for (int i = 0; i < 31; i++) Arrays.fill(flags[i], 1); //录入 for (int i = 0; i < n; i++) for (int j = 0; j < m; j++) map[i][j] = scan.nextInt(); int flag = 1; // 消除行 for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { if (j < m - 1 && map[i][j] == map[i][j + 1])// 边界 flag++; else { // 开始投影标记 if (flag >= 3) { while (flag != 0) { flags[i][j+1-flag] = 0; flag--; } } flag = 1; } } } // 消除列 for (int i = 0; i < m; i++) { for (int j = 0; j < n; j++) { if (j < n - 1 && map[j][i] == map[j + 1][i])// 边界 flag++; else { if (flag >= 3) { while (flag != 0) { flags[j+1-flag][i] = 0; flag--; } } flag = 1; } } } // 结果 for (int i = 0; i < n; i++) for (int j = 0; j < m; j++) if (flags[i][j] == 0) map[i][j] = 0; for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { System.out.print(map[i][j] + " "); } System.out.println(); } } } public static void main(String[] args) { // TODO Auto-generated method stub new Test2(); }}
1 0
- CCF 消除类游戏
- CCF 消除类游戏
- ccf 消除类游戏
- CCF 消除类游戏
- ccf 消除类游戏
- CCF消除类游戏
- CCF 消除类游戏
- CCF之消除类游戏
- 【CCF 消除类游戏 水】
- ccf试题 消除类游戏
- ccf认证消除类游戏
- CCF之消除类游戏
- C++ CCF真题----消除类游戏
- CCF-201512-2 消除类游戏(模拟)
- CCF真题----消除类游戏
- CCF 201512-2 消除类游戏
- CCF-201512-2-消除类游戏
- CCF 201512-2 消除类游戏
- [Java]阿里内部面试总结
- Android学习之RecyclerView学习
- Javascript函数封装
- LIBSVM使用方法及参数设置
- Android开源库之使用ZXing开源库二维码-实现竖屏且高识别率
- CCF 消除类游戏
- Android自定义控件下拉刷新和加载更多
- 【一步步学OpenGL 2】-《你好顶点》
- 北大暑期学习之并查集
- Xcode命令Archive导出4个ipa包的含义
- Header First HTML and CSS章后bullet points总结之Chapter 10
- 如何将磁盘从GPT格式转换成MBR格式——或MBR2GPT
- 怎样打印linux/mac环境变量
- uva 156 Ananagrams 解题报告