POJ2965,递归出来的!
2016-04-27 21:47
344 查看
这道题不难,有很多种实现的方法,然而在看了结题报告后,我就看懂了一种!这里贴出java代码仅供参考!
import java.util.Scanner; /* * 这一题大意如下: 一个冰箱上有4*4共16个开关,改变任意一个开关的状态(即开变成关,关变成开)时,此开关的同一行、同一列所有的开关都会自动改变状态。要想打开冰箱,要所有开关全部打开才行。 输入:一个4×4的矩阵,+表示关闭,-表示打开; 输出:使冰箱打开所需要执行的最少操作次数,以及所操作的开关坐标。 + 为关闭状态 - 为打开状态 求在4*4的棋盘中最快调整为 全部打开状态的最少步骤 并输出 要调整的坐标 偶数次操作等于0 次操作 , 奇数次操作等于 1次操作 所以 每个开关的操作次数为一次 * * */ public class poj2965 { static boolean[][] visited = new boolean[4][4]; static char[][] map; static int[] is=new int[16]; static int[] js=new int[16]; public static void main(String[] args) { // TODO Auto-generated method stub Scanner sc = new Scanner(System.in); String[] old = new String[4]; for (int i = 0; i < old.length; i++) { old[i] = sc.nextLine(); } map = new char[4][4]; for (int i = 0; i < old.length; i++) { map[i] = old[i].toCharArray(); } caozuo(map); int count = 0; for (int i = 0; i < 4; i++) { for (int j = 0; j < 4; j++) { if (visited[i][j]) { is[count]=i+1; js[count]=j+1; count++; } } } System.out.println(count); for (int i = 0; i < count; i++) { System.out.println(is[i]+" "+js[i]); } } private static void sop(int[][] arr) { // TODO Auto-generated method stub for (int i = 0; i < 4; i++) { for (int j = 0; j < 4; j++) { System.out.print(arr[i][j]); } System.out.println(); } } private static void caozuo(char[][] map) { // TODO Auto-generated method stub for (int i = 0; i < 4; i++) { for (int j = 0; j < 4; j++) { if (map[i][j] == '+') { visited[i][j] = !visited[i][j]; for (int k = 0; k < 4; k++) { visited[i][k] = !visited[i][k]; visited[k][j] = !visited[k][j]; } } } } } }
相关文章推荐
- 自定义控件三部曲之绘图篇(十)——Paint之setXfermode(一)
- 第四次C++作业
- Android源码分析之Binder进程间通信一
- C# Socket流数据大小端读写封装
- 次短路和次小生成树、
- 站立会议个人博客9(2016/4/27)
- cf489D. Unbearable Controversy of Being
- 性能调优
- java异常体系2
- 团队项目作业五 - 旅游行业App分析
- PAT-B 1010. 一元多项式求导
- C游戏 简单迷宫游戏开发
- golang + Atom 编程环境搭建
- 广度 / 深度优先搜索
- 将JavaScript 插入网页的方法
- [C#反射]C#中的反射解析及使用.
- 如何使用grep 等命令快速的在日志中找到自己需要的内容
- HDU 2112
- java工程读取.properties配置文件
- Fragment知识总结