#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
請問問題出在哪裡呢?
謝謝回答
如果找不到符合的矩陣 要先輸出 0 (回答第一個問題)
然後再輸出 -1(第二個問題)
簡單來說 就是要改成這樣
if(!num) cout<<"0\n-1";
如果找不到符合的矩陣 要先輸出 0 (回答第一個問題)
然後再輸出 -1(第二個問題)
簡單來說 就是要改成這樣
if(!num) cout<<"0\n-1";
原來是弄錯題意
AC了
謝謝您的回答