classSolution{public:intmaximumRows(vector<vector<int>>&matrix,intnumSelect){intans=0;dfs(matrix,/*colIndex=*/0,numSelect,/*mask=*/0,ans);returnans;}private:voiddfs(constvector<vector<int>>&matrix,intcolIndex,intleftColsCount,intmask,int&ans){if(leftColsCount==0){ans=max(ans,getAllZerosRowCount(matrix,mask));return;}if(colIndex==matrix[0].size())return;// Choose this column.dfs(matrix,colIndex+1,leftColsCount-1,mask|1<<colIndex,ans);// Don't choose this column.dfs(matrix,colIndex+1,leftColsCount,mask,ans);}intgetAllZerosRowCount(constvector<vector<int>>&matrix,intmask){intcount=0;for(constvector<int>&row:matrix){boolisAllZeros=true;for(inti=0;i<row.size();++i){if(row[i]==1&&(mask>>i&1)==0){isAllZeros=false;break;}}if(isAllZeros)++count;}returncount;}};
classSolution{publicintmaximumRows(int[][]matrix,intnumSelect){dfs(matrix,/*colIndex=*/0,numSelect,/*mask=*/0);returnans;}privateintans=0;privatevoiddfs(int[][]matrix,intcolIndex,intleftColsCount,intmask){if(leftColsCount==0){ans=Math.max(ans,getAllZerosRowCount(matrix,mask));return;}if(colIndex==matrix[0].length)return;// Choose this column.dfs(matrix,colIndex+1,leftColsCount-1,mask|1<<colIndex);// Don't choose this column.dfs(matrix,colIndex+1,leftColsCount,mask);}intgetAllZerosRowCount(int[][]matrix,intmask){intcount=0;for(int[]row:matrix){booleanisAllZeros=true;for(inti=0;i<row.length;++i){if(row[i]==1&&(mask>>i&1)==0){isAllZeros=false;break;}}if(isAllZeros)++count;}returncount;}}
classSolution:defmaximumRows(self,matrix:list[list[int]],numSelect:int)->int:ans=0defdfs(colIndex:int,leftColsCount:int,mask:int):nonlocalansifleftColsCount==0:ans=max(ans,self._getAllZerosRowCount(matrix,mask))returnifcolIndex==len(matrix[0]):return# Choose this column.dfs(colIndex+1,leftColsCount-1,mask|1<<colIndex)# Don't choose this column.dfs(colIndex+1,leftColsCount,mask)dfs(0,numSelect,0)returnansdef_getAllZerosRowCount(self,matrix:list[list[int]],mask:int)->int:count=0forrowinmatrix:isAllZeros=Truefori,numinenumerate(row):ifnum==1and(mask>>i&1)==0:isAllZeros=FalsebreakifisAllZeros:count+=1returncount
Thanks for stopping by! If you find this site helpful, consider buying me some protein powder to keep me fueled! π