#41790: 有人可以幫我看看為什麼第二行會輸出這樣嗎


lei948787@gmail.com (chen Lai)

學校 : 歡迎光臨羅東高級中學
編號 : 274305
來源 : [61.58.98.185]
最後登入時間 :
2024-09-21 23:08:35
h027. 202001_2 矩陣總和 -- 2020年1月APCS | From: [61.58.98.185] | 發表日期 : 2024-08-27 20:46

#include <iostream>
#include <vector>
#include <cmath>
using namespace std;

void compare(vector<vector<int>> &a,vector<vector<int>> &b,vector<int> &bnum,int x,int y,int r);

int main(void) {
    ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
    
    vector<vector<int>> a;
    vector<vector<int>> b;
    vector<int> tempa;
    vector<int> bnum;
    int s,t,n,m,r,temp,anum,mininum;
    cin>>s>>t>>n>>m>>r;
    //輸入a矩陣
    for (int i=1; i<=s; i++) {
        for (int i2=1; i2<=t; i2++) {
            cin>>temp;
            tempa.push_back(temp);
        }
        a.push_back(tempa);
        tempa.clear();
    }
    //輸入b矩陣
    for (int i=1; i<=n; i++) {
        for (int i2=1; i2<=m; i2++) {
            cin>>temp;
            tempa.push_back(temp);
        }
        b.push_back(tempa);
        tempa.clear();
    }
    //main
    for (int x=0; x<b[0].size()-a[0].size()+1; x++) {
        for (int y=0; y<b.size()-a.size()+1; y++) {
            compare(a,b,bnum,x,y,r);    
        }    
    }
    //output
    for (int i=0; i<a.size(); i++) {
        for (int i2=0; i2<a[0].size(); i2++) {
            anum = anum+a[i][i2];//a矩陣大小
        }
    }
    cout<<bnum.size()<<endl;
    if (bnum.size()==0) {
        cout<<-1<<endl;
    } else {
        mininum = abs(bnum[0]-anum);
        for (int i=0; i<bnum.size(); i++) {
            if (abs(bnum[i]-anum)<mininum) {
                mininum = abs(bnum[i]-anum);
            }
        }
        cout<<mininum<<endl;
    }
    return 0;
}

void compare(vector<vector<int>> &a,vector<vector<int>> &b,vector<int> &bnum,int x,int y,int r) {
    int num = 0;
    int num2 = 0;
    for (int i=0; i<a.size(); i++) {
        for (int i2=0; i2<a[0].size(); i2++) {
            if (a[i][i2]!=b[y+i][x+i2]) {
                num = num+1;
            }
        }
    }
    if (num<=r) {
        for (int i=0; i<a.size(); i++) {
            for (int i2=0; i2<a[0].size(); i2++) {
                num2 = num2+b[y+i][x+i2];
            }    
        }
        bnum.push_back(num2);
    }
}

 
#41829: Re: 有人可以幫我看看為什麼第二行會輸出這樣嗎


cges30901 (cges30901)

學校 : 不指定學校
編號 : 30877
來源 : [39.9.74.255]
最後登入時間 :
2024-10-14 22:20:08
h027. 202001_2 矩陣總和 -- 2020年1月APCS | From: [27.240.226.88] | 發表日期 : 2024-08-30 15:53


    int s,t,n,m,r,temp,anum,mininum;


anum沒有初始化

 
ZeroJudge Forum