dao cot
duyvan
plain_text
2 years ago
2.2 kB
15
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