• 稀疏数组


    编写的五子棋程序中,有存盘退出和续上盘的功能。

    分析问题:
    因为该二维数组的很多值是默认值0, 因此记录了很多没有意义的数据.->稀疏数组。

    Demo:

    import com.sun.xml.internal.ws.api.model.wsdl.WSDLOutput;
    
    /**
     * @author zhou
     */
    public class ArraysDemo {
        public static void main(String[] args) {
            //1.创建一个二维数组11*11  0代表没有棋子,1代表黑棋,2代表白棋
            int[][] arrays=new int[11][11];
            arrays[1][2]=1;
            arrays[2][3]=2;
            arrays[2][4]=2;
            arrays[10][4]=2;
            //输出原始数组
            System.out.println("输出原始的数组");
    
            for (int[] ints : arrays) {
                for (int anInt : ints) {
                    System.out.print(anInt+"	");
                }
                System.out.println();
            }
    
            System.out.println("=======================");
            //转换成稀疏数组
            //1.获取有效值的个数
            int sum=0;
            for (int i = 0; i < 11; i++) {
                for (int j = 0; j < 11; j++) {
                    if(arrays[i][j]!=0){
                        sum++;
                    }
                }
            }
            System.out.println("有效值的个数为:"+sum);
            //2.创建一个稀疏数组的数组
            int[][] arrays2=new int[sum+1][3];
            arrays2[0][0]=11;
            arrays2[0][1]=11;
            arrays2[0][2]=sum;
            //3.遍历二维数组,将非零的值,存放稀疏数组中
            int count=0;
            for (int i = 0; i < arrays.length; i++) {
                for (int j = 0; j < arrays[i].length; j++) {
                    if(arrays[i][j]!=0){
                        count++;
                        arrays2[count][0]=i;//
                        arrays2[count][1]=j;//
                        arrays2[count][2]=arrays[i][j];//
                    }
                }
            }
            //4.输出稀疏数组
            System.out.println("输出稀疏数组");
    
            for (int i = 0; i < arrays2.length; i++) {
                System.out.println(arrays2[i][0]+"	"+arrays2[i][1]+"	"+arrays2[i][2]+"	");
            }
    
            System.out.println("=======================");
            //再将稀疏数组转换成原始数组
            //1.读取稀疏数组(new int[arrays2[0][0]][arrays2[0][1]]=new int[11][11])
            int[][] arrays3=  new int[arrays2[0][0]][arrays2[0][1]];
            //2.给其中的元素还原它的值(int i = 1 第一行为标题11、11、sum)
            for (int i = 1; i < arrays2.length; i++) {
                arrays3[arrays2[i][0]][arrays2[i][1]]=arrays2[i][2];
            }
            //3.打印
            for (int[] ints : arrays3) {
                for (int anInt : ints) {
                    System.out.print(anInt+"	");
                }
                System.out.println();
            }
        }
    }

  • 相关阅读:
    Selenium 疑问之一:WebDriver 获得弹出窗口(转)
    Selenium 疑问之三:Selenium2.0 对于Wrapped元素的click()不起作用怎么办?
    [转]网站性能工具Yslow的使用方法
    Hudson + Ant + SVN + Tomcat配置详解
    Selenium 疑问之二:如何使页面滚动条移动到指定元素element的位置处?
    【转】组合测试法中的全对偶测试法
    Ant 之property 总结
    [转载]使用Selenium2测试含有iframe的Ajax网页
    Nginx反向代理WebSocket链接失败问题
    WebSocket语法糖
  • 原文地址:https://www.cnblogs.com/1693977889zz/p/13963245.html
Copyright © 2020-2023  润新知