首页 > 其他分享 >被列覆盖的最多行数

被列覆盖的最多行数

时间:2023-08-25 22:55:04浏览次数:23  
标签:多行 java matrix 覆盖 int res 被列 col selectRows

思路

1、使用回溯算法,不断的尝试覆盖numselect行数

2、找到最大覆盖行数

代码

 

import java.math.BigDecimal;
import java.util.*;
import java.util.stream.Collectors;

public class Main {
    public static void main(String[] args) {
        Solution solution = new Solution();
        int res = solution.maximumRows(new int[][]{
                {0,0,0,1},
                {0,1,0,1},
                {0,0,0,1},
                {0,1,0,1},

        }, 1);

        System.out.println(res);

    }

}

class Solution {
    int max;
    public int maximumRows(int[][] matrix, int numSelect) {
        if (matrix[0].length <= numSelect){
            return matrix.length;
        }

        int[] row = new int[matrix[0].length];
        for (int i = 0; i < row.length; i++) {
            row[i] = i;
        }

        calMaxRows(row, 0, numSelect, matrix);

        return max;
    }

    private void calMaxRows(int[] row, int index, int numSelect, int[][] matrix) {
        if (index == numSelect){
            max = Math.max(max, calRow(row, numSelect, matrix));
            return;
        }

        for (int i = index; i < row.length; i++) {
            swap(index, i, row);
            calMaxRows(row, index + 1, numSelect, matrix);
            swap(i, index, row);
        }

    }

    private void swap(int i, int j, int[] row) {
        int temp = row[i];
        row[i] = row[j];
        row[j] = temp;
    }


    private int calRow(int[] rows, int numSelect, int[][] matrix) {
        HashSet<Integer> selectRows = new HashSet<>();
        for (int i = 0; i < numSelect; i++) {
            selectRows.add(rows[i]);
        }

        int res = 0;
        for (int[] ints : matrix) {
            boolean flag = true;
            for (int col = 0; col < matrix[0].length; col++) {
                if (selectRows.contains(col)) {
                    continue;
                }
                if (ints[col] != 0) {
                    flag = false;
                    break;
                }
            }
            if (flag) {
                res++;
            }
        }
        return res;
    }


}

 

标签:多行,java,matrix,覆盖,int,res,被列,col,selectRows
From: https://www.cnblogs.com/Adam-Ye/p/17658137.html

相关文章

  • 【C#】【Windows 窗体应用】TextBox 的多行实现换行
    1.设置TextBox空间允许多行: this.textBox1.Multiline=true;  2.换行字符是使用"\r\n"。1textBox1.Text+="第0行\r\n";2textBox1.Text+="第1行\r\n";3textBox1.Text+="第2行\r\n";4textBox1.Text+="第3行\r\n";5......
  • 大风歌V覆盖地方个地:一篇简洁概括
    ​大风歌V的覆盖的发‍​​​地方个地‍​​‍​​‍‍‍​​‍​​​​‍​​......
  • java应用接口自动化覆盖率统计实践
    一、背景Java应用接口自动化覆盖率统计的意义在于:确保测试覆盖率:通过自动化覆盖率统计,可以确保测试用例对应用程序的各个接口进行了全面的覆盖。这有助于发现潜在的代码错误、逻辑漏洞或者未处理的异常情况。提高代码质量:通过自动化覆盖率统计,可以发现代码中未被测试到的部......
  • java-sdk接口测试覆盖率统计实践
    一、背景接口覆盖率统计在JavaSDK开发中具有重要的意义。它衡量了代码中接口被测试用例覆盖的程度,即测试用例对接口的执行情况进行了多少次验证。接口覆盖率统计的意义包括:质量保证:接口覆盖率统计可以帮助开发团队评估测试的全面性和质量,确保代码的正确性和稳定性。高覆盖率......
  • postgresql 查询重复,多行合并
    --postgresql--替换字符串UPDATEtmpSETphone=REPLACE(phone,'myzs','');--查询替换中间4位为*SELECTCONCAT_WS('****',SUBSTR(phone,1,3),SUBSTR(phone,8))asnew_phone_numberFROMtmp;--更新手机号为中间四位为*UPDATEtmpsetnewphone=C......
  • SpringBoot复习:(45)@Component定义的bean会被@Bean定义的同名的bean覆盖
    有同名的bean需要配置:spring.main.allow-bean-definition-overriding=true否则报错。packagecn.edu.tju.component;importorg.springframework.stereotype.Component;@ComponentpublicclassPerson{privateStringname;privateintage;{this......
  • app直播源码,读取多行文本、读取文件分割多行文本
    app直播源码,读取多行文本、读取文件分割多行文本读取文本 publicfunctiondaoru(){/* *逐行读取TXT文件  */     $rep=str_replace("\n",',',"TD92069E76EC27CA8B66B631CB49A9C6TD5A22D898050393C2F8D5C29C854F1B");    $cont=explode(',',$re......
  • 【剑指Offer】10、矩形覆盖
    【剑指Offer】10、矩形覆盖题目描述:我们可以用2X1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2X1的小矩形无重叠地覆盖一个2Xn的大矩形,总共有多少种方法?解题思路:我们可以以2X8的矩形为例。先把2X8的覆盖方法记为f(8),用1X2的小矩形去覆盖时,有两种选择:横着放或......
  • 最小圆覆盖
    Smiling&Weeping----终于明白,有些路,只能一个人走。那些邀约好同行的人,一起相伴雨季,走过年华,但有一天终究会在某个渡口离散。 题目链接:https://www.luogu.co......
  • 【LeetCode1384. 按年度列出销售总额】MySQL使用with recursive根据开始日期和结束日
    题目地址https://leetcode.cn/problems/total-sales-amount-by-year/description/代码WITHRECURSIVEDateSeriesAS(SELECTproduct_id,period_startASsale_date,period_end,average_daily_salesFROMSales--Assumingyourtablenameissales_dataUN......