#30458: C++ 90分,請問哪裡有錯?


e002933 (徐MAN)

學校 : 不指定學校
編號 : 158405
來源 : [111.71.113.217]
最後登入時間 :
2023-11-18 16:56:51
h027. 202001_2 矩陣總和 -- 2020年1月APCS | From: [118.150.201.99] | 發表日期 : 2022-05-22 19:42

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

int main() {
    int s, t, n, m, r;
    cin>>s>>t>>n>>m>>r;
    int a[s][t], b[n][m];
    int sum = 0;
    for(int i = 0; i < s; i++)
        for(int j = 0; j < t; j++) {
            cin>>a[i][j];
            sum+=a[i][j];
        }
    for(int i = 0; i < n; i++)
        for(int j = 0; j < m; j++)
            cin>>b[i][j];
    int max = 10000, locate, num = 0, sumb;
    bool enter;
    for(int i = 0; i < n-s+1; i++)
        for(int j = 0; j < m-t+1; j++) {
            enter = 0;
            sumb = 0;
            locate = 0;
            for(int p = 0; p < s; p++)
                for(int q = 0; q < t; q++) {
                    sumb += b[p+i][q+j];
                    if(a[p][q] != b[p+i][q+j])
                        locate++;
                }
            if(locate <= r) {
                enter = 1;
                num++;
            }
            if(enter && max > abs(sum - sumb))
                max = abs(sum - sumb);
        }
    if(!num)
        cout<<"-1";
    else
        cout<<num<<endl<<max;
}

不管幾次測都錯兩題,兩題都是:

您的答案是 : -1

正確答案為: 0

請問問題出在哪裡呢?

謝謝回答

 
#30464: Re: C++ 90分,請問哪裡有錯?


dfd8282@gmail.com (fishhh)

學校 : 嘉義市私立嘉華高級中學
編號 : 99760
來源 : [140.114.59.162]
最後登入時間 :
2024-11-13 00:16:45
h027. 202001_2 矩陣總和 -- 2020年1月APCS | From: [36.236.42.248] | 發表日期 : 2022-05-23 10:16

如果找不到符合的矩陣 要先輸出 0 (回答第一個問題)

然後再輸出 -1(第二個問題)

簡單來說 就是要改成這樣

if(!num)
        cout<<"0\n-1";
 
#30472: Re: C++ 90分,請問哪裡有錯?


e002933 (徐MAN)

學校 : 不指定學校
編號 : 158405
來源 : [111.71.113.217]
最後登入時間 :
2023-11-18 16:56:51
h027. 202001_2 矩陣總和 -- 2020年1月APCS | From: [118.150.201.99] | 發表日期 : 2022-05-23 18:48

如果找不到符合的矩陣 要先輸出 0 (回答第一個問題)

然後再輸出 -1(第二個問題)

簡單來說 就是要改成這樣

if(!num)
        cout<<"0\n-1";

原來是弄錯題意

AC了

謝謝您的回答

 
ZeroJudge Forum