dao cot
duyvan
plain_text
2 years ago
2.2 kB
38
Indexable
//daocot
/*
dao K lan cot der lay duoc so hang toan 1 nhieu nhat
Input: Cho 3 số N, M, K
Tiếp theo là ma trận NxM
Output: In ra số lượng hàng toàn 1 nhiều nhất định dạng như bên dưới
Case #1 1
Case #2 2
*/
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
using namespace std;
int n,col,m;
int map[300][300];
int temp[300][300];
int maxas;
void init(){
for(int i=0;i<n;i++){
for(int j=0;j<col;j++){
temp[i][j]=map[i][j];
}
}
}
void lat(int index){
for(int i=0;i<n;i++){
if(temp[i][index]==0){
temp[i][index]=1;
}
else{
temp[i][index]=0;
}
}
}
int dem(){
int count=0;
for(int i=0;i<n;i++){
int check=true;
for(int j=0;j<col;j++){
if(temp[i][j]==0){
check=false;
}
}
if(check==true){
count++;
}
}
return count;
}
int main()
{
int T;
ios::sync_with_stdio(false);
//freopen("INP.txt", "r", stdin);
cin >> T;
for(int tc=1;tc<=T;tc++){
maxas=0;
cin>>n>>col>>m;
for(int i=0;i<n;i++){
for(int j=0;j<col;j++){
cin>>map[i][j];
}
}
for(int i=0;i<n;i++){
init();
int count=0;
for(int j=0;j<col;j++){
if(temp[i][j]==0){
count++;
lat(j);
}
}
if((count<=m) && (m-count)%2==0){
if(dem()>maxas){
maxas=dem();
}
}
}
cout<<"Case #"<<tc<<" "<<maxas<<endl;
}
return 0;
}
//=====================
Đảo Cột
Trong ma trận nhị phân, phép đảo cột của ma trận là việc thay thế các giá trị của cột
đó từ 0 -> 1 và từ 1 -> 0. Cho ma trận nhị phân NxM (N <= 100, M <= 20), hỏi sau K
lần đảo cột thì số hàng gồm toàn số 1 nhiều nhất có thể thu được là bao nhiêu. (Yêu
cầu phải đảo cột đúng K lần và một cột có thể được đảo nhiều lần)
Ví dụ
Với ví dụ bên, nếu K = 1, ta sẽ có kết quả lớn nhất khi đảo cột thứ 2 và thu được 1
hàng gồm toàn số 1 là hàng thứ 4. Nếu K = 2, kết quả thu được là 2 khi đảo cột thứ 2
và cột thứ 3.Input: Cho 3 số N, M, K
Tiếp theo là ma trận NxM
Output: In ra số lượng hàng toàn 1 nhiều nhất định dạng như bên dưới
Case #1 1
Case #2 2
Editor is loading...
Leave a Comment