为啥没过求助
查看原帖
为啥没过求助
1800410
ideas楼主2025/7/30 13:42
#include<iostream>
using namespace std;
#include <climits>
int check(int x1,int y1,int x2,int y2,int b[100][100]){
    int count[2]={0,0};
    for(int i=x1;i<=y1;i++){
        for(int j=x2;j<=y2;j++){
            count[b[i][j]]++;
            }
        }
    return count[1];
}
int main(){
    int n=0;
    int m=0;
    int k=0;
    cin>>n>>m>>k;
    int a[100][100];
    for(int i=0;i<n;i++){
        string s;
        cin>>s;
        for(int j=0;j<m;j++){
            a[i][j]=s[j]-'0';
        }
    }
    bool flag=false;
    int minarea=INT_MAX;
    for(int x1=0;x1<=n;x1++){
        for(int y1=0;y1<=m;y1++){
            for(int x2=x1;x2<=n;x2++){
                for(int y2=y1;y2<=m;y2++){
                    int num=check(x1,y1,x2,y2,a);
                    if(num>=k){
                        int area=(y1-x1+1)*(y2-x2+1);
                        if(area<minarea){
                            minarea=area;
                            flag=true;
                        }
                    }
                }
            }
        }
    }
    if(flag){
        cout<<minarea<<endl;
    }
    else{
        cout<<0<<endl;
    }
   
    system("pause");
    return 0;
}
2025/7/30 13:42
加载中...