POJ2965,递归出来的!

来源:互联网 发布:大数据前沿技术及应用 编辑:程序博客网 时间:2024/04/27 22:53

这道题不难,有很多种实现的方法,然而在看了结题报告后,我就看懂了一种!这里贴出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 stubScanner 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 stubfor (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 stubfor (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];}}}}}}


0 0